IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Работа со строкой (проблема в выполнении)
Account
сообщение 1.01.2009 22:09
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Задача: Вводится строка содежащая симолы латинского и русского алфавита, цифры и так далее. Сиволы русского алфавита подчеркнуть (просто при выводе следующей строки на месте сивола русского алфавита выводить знак подчеркивание). Проблем с этим не было, но вот когда еще при этом заменяешь все символы не принадлежащие русскому алфавиту на пробел, происходит проблем следующего рода: обрабатываются только первых 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.



Сообщение отредактировано: Account - 1.01.2009 22:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Айра
сообщение 2.01.2009 0:23
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


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

В нулевом элементе строки хранится ее текущая длина, а это, конечно же, не буква русского алфавита, поэтому ты и заменяешь ее на пробел (код которого, по-моему, как раз таки 32) и дальше length(s) уже вычисляется неправильно..
Так что с цикл с единички начинать надо smile.gif

Сообщение отредактировано: Айра - 2.01.2009 0:25
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 12.08.2025 15:27
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"