Как сделать проверку в строке "для дурака" с авто-заменой "," на "." - иначе вылетает - Pascal ABC

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

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

Помогите в программу "запилить" проверку ввода символа (Base, Pawer) "для дурака" с авто-заменой ',' (естественно не читающейся) на соответствующую '.' ; Запутался окончательно с типами данных, поэтому то что накуралесил показывать не cтану, а в общем виде все выглядит так:
Листинг программы
  1. program NumOfPower;
  2. var Power: integer; {степень}
  3. var Base: double; {число}
  4. function MyPower(Base:double; Power:integer):double; {непосредственно расчет}
  5. var i:integer;
  6. var rez:double;
  7. begin
  8. rez:= Base;
  9. for i:=1 toPower-1 do
  10. rez:= rez * Base;
  11. result:=rez;
  12. end;
  13. begin
  14. write('Введите основание :');
  15. read(Base);
  16. write('Введите степень :');
  17. read(Power);
  18. if Power<0 then
  19. begin
  20. Power:=Power*(-1);
  21. write('Итог: число ', Base, ' в сепени ', Power, ' = ', 1/MyPower(Base, Power),';');
  22. end
  23. else
  24. write('Итог: число ', Base, ' в сепени ', Power, ' = ', MyPower(Base, Power), ';');
  25. end.
Из разряда "Я пытался":
Листинг программы
  1. program NumOfPower;
  2. uses System;
  3. var Strin:string;
  4. var Power, i: integer;
  5. var Base: double;
  6. function MyPower(Base:double; Power:integer):double;
  7. var i:integer;
  8. var rez:double;
  9. begin
  10. rez:= Base;
  11. for i:=1 to Power-1 do
  12. rez:= rez * Base;
  13. result:=rez;
  14. end;
  15. begin
  16. write('Введите основание :');
  17. read(Strin);
  18. for i:=length(Strin) downto 1 do
  19. begin
  20. if (Strin[i] = ',') then Strin[i] := '.' ;
  21. end;
  22. Base:= StrToInt(Strin);
  23.  
  24. write('Введите степень :');
  25. read(Power);
  26. if Power<0 then
  27. begin
  28. Power:=Power*(-1);
  29. write('Итог: число ', Base, ' в сепени ', Power, ' = ', 1/MyPower(Base, Power),';');
  30. end
  31. else
  32. write('Итог: число ', Base, ' в сепени ', Power, ' = ', MyPower(Base, Power), ';');
  33. end.

Решение задачи: «Как сделать проверку в строке "для дурака" с авто-заменой "," на "." - иначе вылетает»

textual
Листинг программы
  1. var Power,code: integer; {степень}
  2.      Base: double; {число}
  3.      s:string;
  4. ...........................
  5. repeat
  6. write('Введите основание :');
  7. readln(s);
  8. val(s,base,code);
  9. if code<>0 then writeln('Введите действительное число');
  10. until code=0;
  11. repeat
  12. write('Введите степень :');
  13. readln(s);
  14. val(s,Power,code);
  15. if code<>0 then writeln('Введите целое число');
  16. until code=0;

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

  1. Объявляются переменные Power, code типа integer и Base типа double.
  2. В цикле repeat-until читается ввод пользователя и проверяется на ноль (чтобы прервать цикл).
  3. Для каждой переменной (Power, code, Base) вызывается функция val, которая проверяет введенные данные и преобразует их в допустимый формат. Если данные недопустимы, выводится сообщение об ошибке.
  4. После успешного преобразования данных, переменная code проверяется на ноль. Если ноль, то цикл повторяется, иначе выводится сообщение о том, что введено действительное число.
  5. После ввода всех данных, переменная Power проверяется на ноль. Если ноль, то цикл повторяется, иначе выводится сообщение о том, что введено целое число.
  6. Цикл repeat-until продолжается до тех пор, пока все условия для ввода данных выполняются.

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


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

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

15   голосов , оценка 4.067 из 5

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

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

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