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

> Правила раздела!

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

> Где результат?, Вопрос чисто конкретный.
Balhash
сообщение 2.05.2007 17:48
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской
Реальное имя: Александр

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


М
Пользуемся тегами


Пишу пргу:
program sum;
var
x,y,s:integer;
write('введите 1е сагаемое);
read(x);
write('введите 2е слагаемое');
read(y);
s:=x+y;
write('сумма равна',s);
end.

Компилирую, запускаю, ввожу 1е нажимаю ввод, ввожу 2е нажимаю ввод и wacko.gif .
А где результат?

Сообщение отредактировано: klem4 - 9.05.2007 20:03
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Tan
сообщение 2.05.2007 18:22
Сообщение #2


Профи
****

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

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


Верное замечание, впредь буду компилить под стандартным, ситуацию спасают 2 readln, но почему, не понял =) Можно объяснить ?


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 2.05.2007 20:16
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Tan @ 2.05.2007 19:22) *

Можно объяснить ?

Извиняюсь за вторжение.. не могу удержаться - вопрос уж очень приятный smile.gif

Это плата за простоту идеологии ввода, используемой в Read и ReadLn (Read имеется в виду для файлов типа text!). В простых случаях все работает, как ожидается, но в некоторых случаях возможны накладки..
Твой первый ReadLn уходит на съедение Enter'а, завершающего ввод y.
Ситуацию легко исправить, если использовать для ввода х и у не Read, а ReadLn. Собственно, это и есть тот способ ввода, который предполагается при работе с текстовыми файлами (упрощенно выражаясь smile.gif). Отдельная операция ввода - это всегда ввод строки (в которой может быть несколько чисел). И если эта строка вводилась Read'ом, то завершающий ее Enter обычно просто как бы игнорируется - если не поставить за ним ReadLn, что ты и сделал smile.gif. ReadLn же без параметров просто переходит к новой строке, пропуская конец текущей.
Первый ReadLn очистил буфер, второй выполнил задержку.

PS
Н-да, простого объяснения не вышло.. wacko.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Balhash   Где результат?   2.05.2007 17:48
volvo   Жмешь Alt+F5 и смотришь на результат ...   2.05.2007 17:58
Tan   program sum; var x,y,s:integer; begin {<----} w...   2.05.2007 18:01
volvo   Tan, и что? :) Не заметил, что в программе 2 раза...   2.05.2007 18:03
Tan   Я наверно не тем голову забил, но кроме ковычки в ...   2.05.2007 18:10
volvo   Ты проверял, КАК твой код работает? Вот попробуй е...   2.05.2007 18:12
Tan   не знаю как в БП7, я компилировал на Pascal ABC, у...   2.05.2007 18:15
volvo   Я не знаю, что это Pascal ABC - этот раздел не для...   2.05.2007 18:19
Tan   Верное замечание, впредь буду компилить под станда...   2.05.2007 18:22
Lapp   Можно объяснить ? Извиняюсь за вторжение.. не м...   2.05.2007 20:16
Tan   Спасибо Lapp, для меня ты вполне доступно объяснил...   2.05.2007 20:29
Cherynka   Проблема решается добавлением вместо Readln в конц...   9.05.2007 19:38
volvo   Резонно возникает вопрос - а чем ЭТО лучше чем Rea...   9.05.2007 19:48
Cherynka   Я не говорю про преимущества, я говорю про альтерн...   9.05.2007 19:57
volvo   Максимум 2... Объяснить?   9.05.2007 19:59
Cherynka   Видимо да. Хотя я сама с такой ситуацией не сталки...   9.05.2007 20:11
Sto   Как альтернатива, можно вот так ... readln(y); s:=...   9.05.2007 21:09
Cherynka   Логично. Вот только не пойму, почему вы так катего...   9.05.2007 21:25
Tan   Просто вышеперечисленная дискуссия к которой вы пр...   9.05.2007 21:36


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

 



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