Как сделать проверку в строке "для дурака" с авто-заменой "," на "." - иначе вылетает - Pascal ABC
Формулировка задачи:
Помогите в программу "запилить" проверку ввода символа (Base, Pawer) "для дурака" с авто-заменой ',' (естественно не читающейся) на соответствующую '.' ; Запутался окончательно с типами данных, поэтому то что накуралесил показывать не cтану, а в общем виде все выглядит так:
Листинг программы
- program NumOfPower;
- var Power: integer; {степень}
- var Base: double; {число}
- function MyPower(Base:double; Power:integer):double; {непосредственно расчет}
- var i:integer;
- var rez:double;
- begin
- rez:= Base;
- for i:=1 toPower-1 do
- rez:= rez * Base;
- result:=rez;
- end;
- begin
- write('Введите основание :');
- read(Base);
- write('Введите степень :');
- read(Power);
- if Power<0 then
- begin
- Power:=Power*(-1);
- write('Итог: число ', Base, ' в сепени ', Power, ' = ', 1/MyPower(Base, Power),';');
- end
- else
- write('Итог: число ', Base, ' в сепени ', Power, ' = ', MyPower(Base, Power), ';');
- end.
Из разряда "Я пытался":
Листинг программы
- program NumOfPower;
- uses System;
- var Strin:string;
- var Power, i: integer;
- var Base: double;
- function MyPower(Base:double; Power:integer):double;
- var i:integer;
- var rez:double;
- begin
- rez:= Base;
- for i:=1 to Power-1 do
- rez:= rez * Base;
- result:=rez;
- end;
- begin
- write('Введите основание :');
- read(Strin);
- for i:=length(Strin) downto 1 do
- begin
- if (Strin[i] = ',') then Strin[i] := '.' ;
- end;
- Base:= StrToInt(Strin);
- write('Введите степень :');
- read(Power);
- if Power<0 then
- begin
- Power:=Power*(-1);
- write('Итог: число ', Base, ' в сепени ', Power, ' = ', 1/MyPower(Base, Power),';');
- end
- else
- write('Итог: число ', Base, ' в сепени ', Power, ' = ', MyPower(Base, Power), ';');
- end.
Решение задачи: «Как сделать проверку в строке "для дурака" с авто-заменой "," на "." - иначе вылетает»
textual
Листинг программы
- var Power,code: integer; {степень}
- Base: double; {число}
- s:string;
- ...........................
- repeat
- write('Введите основание :');
- readln(s);
- val(s,base,code);
- if code<>0 then writeln('Введите действительное число');
- until code=0;
- repeat
- write('Введите степень :');
- readln(s);
- val(s,Power,code);
- if code<>0 then writeln('Введите целое число');
- until code=0;
Объяснение кода листинга программы
- Объявляются переменные Power, code типа integer и Base типа double.
- В цикле repeat-until читается ввод пользователя и проверяется на ноль (чтобы прервать цикл).
- Для каждой переменной (Power, code, Base) вызывается функция val, которая проверяет введенные данные и преобразует их в допустимый формат. Если данные недопустимы, выводится сообщение об ошибке.
- После успешного преобразования данных, переменная code проверяется на ноль. Если ноль, то цикл повторяется, иначе выводится сообщение о том, что введено действительное число.
- После ввода всех данных, переменная Power проверяется на ноль. Если ноль, то цикл повторяется, иначе выводится сообщение о том, что введено целое число.
- Цикл repeat-until продолжается до тех пор, пока все условия для ввода данных выполняются.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д