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

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

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

 
 Ответить  Открыть новую тему 
> Где результат?, Вопрос чисто конкретный.
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Жмешь Alt+F5 и смотришь на результат ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

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

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


program sum;
var
x,y,s:integer;
begin {<----}
write('введите 1е сагаемое');
read(x);
write('введите 2е слагаемое');
read(y);
s:=x+y;
write('сумма равна',s);
readln;{<----}
readln;
end.


Сообщение отредактировано: Tan -


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


Гость






Tan, и что?

smile.gif Не заметил, что в программе 2 раза вводится число + Enter? Не поможет тут Readln... Сам догадаешься, почему, или подсказать?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

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

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


Я наверно не тем голову забил, но кроме ковычки в предыдущем своём посте, я больше ничего не заметил =)


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


Гость






Ты проверял, КАК твой код работает? Вот попробуй его запустить, и потом расскажи, ПОЧЕМУ так происходит... Ты же написал ReadLn, почему программа НЕ ждет нажатия на Enter, а завершается сразу же?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

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

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


не знаю как в БП7, я компилировал на Pascal ABC, у меня ожидает ввода данных, могу print screen кинуть.


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


Гость






Я не знаю, что это Pascal ABC - этот раздел не для экзотики, а для стандартного Паскаля...

P.S.
Вопрос к автору: каким компилятором пользуешься?

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

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

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


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


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


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

Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

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

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


Спасибо Lapp, для меня ты вполне доступно объяснил, я всё уловил, только сейчас вспомнил, что такое у меня случалось раньше и довольно часто, но я по разному от этого уходил (в том числе и 2йным Readln, ведь тогда я не знал причину этой штуки).


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





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

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


Проблема решается добавлением вместо Readln в конце программы такой строчки:
 repeat until keypressed;

Хотя данные все-равно лучше вводить с переходом на новую строку

Сообщение отредактировано: Cherynka -


--------------------
Выход из безвыходного положения там же, где вход
Заходите www.defor.ru Стучитесь 225-12-68
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Цитата
Проблема решается
Резонно возникает вопрос - а чем ЭТО лучше чем ReadLn? Преимущество в чем? Вот недостаток я вижу: я ОБЯЗАН подключить CRT, чего не требуется с ReadLn, а преимущества где?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14





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

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


Я не говорю про преимущества, я говорю про альтернативу. В данном же случае одного Readln мало, уже два надо. А если переменных больше, а переход на другую строку не сделан, тогда сколько readlnов понадобится?
З.Ы. Я не претендую на идеальность этого варианта

Сообщение отредактировано: Cherynka -


--------------------
Выход из безвыходного положения там же, где вход
Заходите www.defor.ru Стучитесь 225-12-68
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Цитата
тогда сколько readlnов понадобится?
Максимум 2... Объяснить?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16





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

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


Видимо да. Хотя я сама с такой ситуацией не сталкивалась - не идет один ReadLn, тогда пользуюсь вышеуказанным циклом


--------------------
Выход из безвыходного положения там же, где вход
Заходите www.defor.ru Стучитесь 225-12-68
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Пионер
**

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

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


Как альтернатива, можно вот так
...
readln(y);
s:=x+y;
write('сумма равна',s);
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18





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

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


Логично. Вот только не пойму, почему вы так категорично отнеслиськ моему варианту? nea.gif


--------------------
Выход из безвыходного положения там же, где вход
Заходите www.defor.ru Стучитесь 225-12-68
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Профи
****

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

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


Просто вышеперечисленная дискуссия к которой вы присоединились не носила характера как от этого избавиться (я даже до поста Lapp без проблем бы обошёл эту проблему, мы просто говорили почему она возникла). Cherynka, ответ на твой пост, а зачем лишний модуль в программе ? К тому же если автор вопроса выложил исходник, надо быть максимально близким к нему в решении и рекомендациях. Можно и ассемблером обойти эту проблему, но в данной ситуации надо ли это ?

Сообщение отредактировано: Tan -


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 20.04.2024 18:34
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name