gvozd Опубликовано 15 февраля, 2005 Жалоба Поделиться Опубликовано 15 февраля, 2005 (изменено) Почему не считывается переменная s2? program slova;uses crt;vars1: string;s2: string;i:integer;beginclrscr;begin WriteLN('Введите первое слово: '); Read(s1); WriteLN('Введите второе слово: '); Read(s2);end;For i:=1 to length(s1) do beginIf pos(s1[i],s2)=0 thenbegin WriteLN('Составить нельзя'); Readkey; Halt(0);endelse delete(s2,pos(s1,s2),1); end;WriteLN('Можно составить');end. Изменено 15 февраля, 2005 пользователем gvozd Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 15 февраля, 2005 Жалоба Поделиться Опубликовано 15 февраля, 2005 (изменено) gvozd Используй ReadLn вместо Read. Они по-разному работают с буфером. P.S. Описаниям в учебниках о том, что, дескать, разница только в том, что ReadLN переводит строку, а Read - нет, не верь. На самом деле все совсем иначе. Кто-то когда-то написал чушь, и почти все авторы учебников ее переписывают. Изменено 15 февраля, 2005 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
yuriks Опубликовано 15 февраля, 2005 Жалоба Поделиться Опубликовано 15 февраля, 2005 Разница между работой процедур Read и Readln состоит в следующем: после выполнения Read значение следующего данного считывается с этой же строчки, а после выполнения Readln - с новой строки. Поетому у тебя и читает пустую строчку, так как первая Read считала до конца строки. P.S. Так что в книгах все правильно, нужно только правильно ето понимать что переводится строка не вывода информации а ввода. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 15 февраля, 2005 Жалоба Поделиться Опубликовано 15 февраля, 2005 yuriks Ну, не скажу, чтобы формулировка "переводится строка не вывода информации а ввода" была понятна. Но по сути согласен. Если это подробно расшифровать, будет понятно и тем, кто учит язык. Но в учебниках обычно пишется о курсоре и переводе строки. Хотя на самом деле речь должна идти о буфере ввода, а для буфера или файла это называется текущая позиция и метка конца строки (#10#13). Курсор и перевод строки - понятия для экрана. Отсюда и путаница. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти