Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2021, 10:49   #1
cherig
Новичок
Джуниор
 
Регистрация: 09.09.2013
Сообщений: 1
По умолчанию Не срабатывает readln

// Рассчитать количество досок на забор
// х,у,- стороны участка
// ширина доски 10см
program zabor;

var
x, y, KD: real;
fin: char;

begin
repeat
writeln('Введите x, y');
read(x,y);
KD := 2 * (x + y) / 0.1;
writeln('Количество досок на забор ', (KD):0:0, ' штук');
writeln ('Выйти из программы? (y-да,n-нeт)');
readln (fin);
until fin = 'y';
writeln ('пока-пока');
end.
---------------------------------
Ввелите x, y
8
9
Количество досок на забор 340 штук
Выйти из программы? (y-да,n-нeт)
Ввелите x, y
-----------------------------------

По протоколу видно, что не срабатывает readln (fin)
cherig вне форума Ответить с цитированием
Старый 10.12.2021, 11:02   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

ln отсюда - readln (fin);
переставьте сюда - read (x,y);
type_Oleg вне форума Ответить с цитированием
Старый 10.12.2021, 16:19   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Немного добавлю.
НИКОГДА не принимайте данные с клавиатуры через read().
Эта процедура применяется при чтении данных из файла по словам.
Последнее слово строки должно быть прочитано через readln().
При этом, если читается строка целиком, то только readln().

PS: Такое положение вызвано тем обстоятельством, что пользователь завершает ввод нажатием клавиши Enter, которая добавляет в буфер приёма два символа CR и LF.
Это так для Windows, а как в других системах не знаю.
Эти символы не считываются процедурой read(), но считываются, и буфер очищается, процедурой readln().

PSS: Попробуй донести эту мысль до преподавателя. К сожалению многие этого не знают.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 11.12.2021, 15:40   #4
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

сказал бы одну фразу, будь мужиком: не используй вывод на экран и ввод данных с клавиатуры, а используй чтение исходных данных из файла и запись ответа в файл...
но не буду.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 12.12.2021, 16:57   #5
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Подправил:
Код:
var
   x, y, KD: real;
   fin: char;
begin
   repeat
      writeln('Введите x, y');
      readln(x,y);
      KD := 2 * (x + y) / 0.1;
      writeln('Количество досок на забор ', (KD):0:0, ' штук');
      writeln ('Выйти из программы? (y-да,n-нeт)');
      readln (fin);
   until fin = 'y';
   writeln ('пока-пока');
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер срабатывает раньше времени или вообще не срабатывает Terebonko JavaScript, Ajax 1 03.08.2017 11:48
Поток + Readln niva622 Общие вопросы Delphi 4 09.02.2017 13:36
Readln и задержка Freezy Паскаль, Turbo Pascal, PascalABC.NET 0 17.04.2011 15:26
Readln BaJIuK Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 25.06.2010 04:21