Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа со строкой (проблема в выполнении)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Account
Задача: Вводится строка содежащая симолы латинского и русского алфавита, цифры и так далее. Сиволы русского алфавита подчеркнуть (просто при выводе следующей строки на месте сивола русского алфавита выводить знак подчеркивание). Проблем с этим не было, но вот когда еще при этом заменяешь все символы не принадлежащие русскому алфавиту на пробел, происходит проблем следующего рода: обрабатываются только первых 32 симовла, не пойму как ее решить, далее код программы


uses crt;
var
s:string;
i:byte;
begin
clrscr;
readln(s);
writeln(length(s));
{s1:=s;}
for i:=0 to length(s) do
begin
if (((ord(s[i])>=128) and (ord(s[i])<=175) ) or ( (ord(s[i]) >= 224) and (ord(s[i]) <= 241) ))
then s[i]:='-' else s[i]:=' ';
end;
writeln(s);
readkey
end.

Айра
Ошибка тут:
Цитата
for i:=0 to length(s) do

В нулевом элементе строки хранится ее текущая длина, а это, конечно же, не буква русского алфавита, поэтому ты и заменяешь ее на пробел (код которого, по-моему, как раз таки 32) и дальше length(s) уже вычисляется неправильно..
Так что с цикл с единички начинать надо smile.gif
Account
Айра, спасибо! А я и забыл про значение 0-ого элемента строки( Совсем от рук отбился. Еще раз респект тебе;) give_rose.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.