Пропускается readln в цикле. В чем фокус? - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Код:
Листинг программы
  1. Program SPISOK;
  2. uses crt;
  3. type
  4. sp=record
  5. sur,nam,pat:string[20];
  6. age:integer;
  7. sex:Char;
  8. end;
  9. var
  10. file_name:string[10];
  11. f:file of sp;
  12. str:sp;
  13. i:integer;
  14. begin
  15. clrscr;
  16. writeln ('Введите логин');
  17. readln (file_name);
  18. assign (f,file_name+'.note');
  19. rewrite(f);
  20. repeat
  21. with str do begin
  22. write ('Введите фамилию-');
  23. readln (sur);
  24. write ('Введите имя-');
  25. readln (nam);
  26. write ('Введте отчество-');
  27. readln (pat);
  28. write ('Введите возраст-');
  29. readln (age);
  30. write ('Введите пол (м/ж)-');
  31. repeat read (sex); until (sex='м') or (sex='ж');
  32. writeln;
  33. end;
  34. write (f,str);
  35. writeln ('Для продолжения введите 1,');
  36. write ('для того чтобы закончить запись введите 0:');
  37. read (i);
  38. until i=0;
  39. close (f);
  40. end.
вроде все визуально норм. но на втором круге цикла получаем шнягу, как на скриншоте, слипаются две строчки ввоа. Беда-помогите.

Решение задачи: «Пропускается readln в цикле. В чем фокус?»

textual
Листинг программы
  1. Program SPISOK;
  2. uses crt;
  3. type
  4. sp=record
  5. sur,nam,pat:string[20];
  6. age:integer;
  7. sex:Char;
  8. end;
  9. var
  10. file_name:string[10];
  11. f:file of sp;
  12. str:sp;
  13. i:integer;
  14. begin
  15. clrscr;
  16. writeln ('Введите логин');
  17. readln (file_name);
  18. assign (f,file_name+'.note');
  19. rewrite(f);
  20. repeat
  21. with str do begin
  22. writeln ('Введите фамилию-');
  23. readln (sur);
  24. writeln ('Введите имя-');
  25. readln (nam);
  26. writeln ('Введте отчество-');
  27. readln (pat);
  28. writeln ('Введите возраст-');
  29. readln (age);
  30. writeln ('Введите пол (м/ж)-');
  31. repeat readln (sex); until (sex='м') or (sex='ж');
  32. writeln;
  33. end;
  34. write (f,str);
  35. writeln ('Для продолжения введите 1,');
  36. write ('для того чтобы закончить запись введите 0:');
  37. readln (i);
  38. until i=0;
  39. close (f);
  40. end.

Объяснение кода листинга программы

  1. Создание формы с полями для ввода информации о пользователе.
  2. Запрос на ввод логина пользователя.
  3. Формирование имени файла для записи данных.
  4. Открытие файла для записи информации о пользователе.
  5. Проверка существования файла и его открытие для записи данных.
  6. Ввод информации о пользователе в файл.
  7. Повторный запрос на ввод информации о пользователе до тех пор, пока пользователь не введет 0.
  8. Закрытие файла после окончания записи информации о пользователе.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы