Исправить процедуру безопасного ввода чисел - PascalABC.NET
Формулировка задачи:
Две проблемы:
Не ставиться запятая (что-то не то с рядком res:=res/(power(10,k)); )
Если введены некорректные данные, пишет это и в программу посылает 0. А надо, чтоб спрашивала еще.
Листинг программы
- procedure readnum(var num:real);
- var s: string;
- ch: char;
- i,k: byte;
- res: real;
- begin
- res:=0;
- k:=0;
- readln(s);
- for i:=1 to length(s) do begin
- ch:=s[i];
- if ch in ['0'..'9'] then begin
- res:=res*10+(ord(ch)-48);
- end else begin
- if (ord(ch)=44) or (ord(ch)=46) then begin
- if ch in ['0'..'9'] then begin
- inc(k);
- res:=res*10+(ord(ch)-48);
- res:=res/(power(10,k));
- end;
- end else begin
- writeln('Введены некорректные данные');
- break;
- end;
- end;
- end ;
- num:=res;
- end;
Решение задачи: «Исправить процедуру безопасного ввода чисел»
textual
Листинг программы
- begin
- var a: Real;
- try
- ReadLn(a)
- except
- WriteLn('это не число');
- end;
- end.
Объяснение кода листинга программы
В данном коде на языке PascalABC.Net реализована процедура безопасного ввода чисел.
- Объявляется переменная типа Real с именем
a
. - В блоке try происходит попытка чтения числа с помощью функции ReadLn(a).
- Если чтение числа прошло успешно, то программа продолжает работу.
- Если при чтении числа произошла ошибка (например, пользователь ввел не число), то в блоке except выводится сообщение
это не число
. - Код в блоке end. завершает работу программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д