Исправить процедуру безопасного ввода чисел - PascalABC.NET

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

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

Две проблемы: Не ставиться запятая (что-то не то с рядком res:=res/(power(10,k)); ) Если введены некорректные данные, пишет это и в программу посылает 0. А надо, чтоб спрашивала еще.
Листинг программы
  1. procedure readnum(var num:real);
  2. var s: string;
  3. ch: char;
  4. i,k: byte;
  5. res: real;
  6. begin
  7. res:=0;
  8. k:=0;
  9. readln(s);
  10. for i:=1 to length(s) do begin
  11. ch:=s[i];
  12. if ch in ['0'..'9'] then begin
  13. res:=res*10+(ord(ch)-48);
  14. end else begin
  15. if (ord(ch)=44) or (ord(ch)=46) then begin
  16. if ch in ['0'..'9'] then begin
  17. inc(k);
  18. res:=res*10+(ord(ch)-48);
  19. res:=res/(power(10,k));
  20. end;
  21. end else begin
  22. writeln('Введены некорректные данные');
  23. break;
  24. end;
  25. end;
  26. end ;
  27. num:=res;
  28. end;

Решение задачи: «Исправить процедуру безопасного ввода чисел»

textual
Листинг программы
  1. begin
  2.   var a: Real;
  3.  
  4.   try
  5.     ReadLn(a)
  6.   except
  7.     WriteLn('это не число');
  8.   end;
  9. end.

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

В данном коде на языке PascalABC.Net реализована процедура безопасного ввода чисел.

  1. Объявляется переменная типа Real с именем a.
  2. В блоке try происходит попытка чтения числа с помощью функции ReadLn(a).
  3. Если чтение числа прошло успешно, то программа продолжает работу.
  4. Если при чтении числа произошла ошибка (например, пользователь ввел не число), то в блоке except выводится сообщение это не число.
  5. Код в блоке end. завершает работу программы.

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


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

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

12   голосов , оценка 3.917 из 5

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

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

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