Неверная вещественная операция и деление на ноль, как исправить? - Pascal ABC
Формулировка задачи:
Есть задача: Вычислить и вывести значение функции при изменении значения аргумента от А до В с шагом С и определить минимальное и максимальное значение функции на отрезке. Использовать в одной программе три различных типа простых циклов (IF THEN GOTO, WHILE-DO, REPEAT-UNTIL). Мой вариант задачи на скриншоте, а=-2, b=2, шаг с=0.2.
В строке 30
пишет: Неверная вещественная операция,в строке 82
деление на ноль, как исправить? Вот код:Решение задачи: «Неверная вещественная операция и деление на ноль, как исправить?»
textual
Листинг программы
const a=-2; b=2; c=0.2; var x,y,max,min:real; begin x:=a; y:=x*x+sqr(sin((x+pi)/2)/cos((x+pi)/2)); max:=y; min:=y; repeat if x<=-0.5 then y:=x*x+sqr(sin((x+pi)/2)/cos((x+pi)/2)) else if x<=0.5 then y:=cos(exp(ln(abs(x+ln(abs(x))))/5)) else if x+exp(x)*sqrt(x+1)-pi<0 then y:=exp(ln(-(x+exp(x)*sqrt(x+1)-pi))/3) else y:=exp(ln(x+exp(x)*sqrt(x+1)-pi)/3); if y>max then max:=y else if y<min then min:=y; writeln('y(',x:0:1,') = ',y:0:5); x:=x+c; until x>=b; writeln('max = ',max:0:5,', min = ',min:0:5); readln end.
Объяснение кода листинга программы
- В начале кода объявлены константы и переменные: — a, b — целочисленные константы со значениями -2 и 2 соответственно; — c — вещественная константа со значением 0.2; — x, y, max, min — переменные типа real.
- Далее в блоке begin происходит инициализация переменной x значением a.
- Затем в блоке begin происходит вычисление значения переменной y по формуле x*x+sqr(sin((x+pi)/2)/cos((x+pi)/2)).
- Значения переменных max и min инициализируются значением переменной y.
- Далее в цикле repeat выполняется проверка значения переменной x и в зависимости от этого значения переменной y присваивается одно из трех возможных значений: — если x<=-0.5, то y = xx+sqr(sin((x+pi)/2)/cos((x+pi)/2)); — если x<=0.5, то y = cos(exp(ln(abs(x+ln(abs(x))))/5)); — если x+exp(x)sqrt(x+1)-pi<0, то y = exp(ln(-(x+exp(x)sqrt(x+1)-pi))/3); — если x+exp(x)sqrt(x+1)-pi>=0, то y = exp(ln(x+exp(x)*sqrt(x+1)-pi)/3).
- В каждой итерации цикла проверяется, является ли значение переменной y больше max, если да, то max присваивается значение переменной y, иначе проверяется, является ли значение переменной y меньше min, если да, то min присваивается значение переменной y.
- Выводится значение переменной y с шагом 0.1, значение переменной x увеличивается на c.
- После окончания цикла repeat выводится значение переменных max и min.
- В конце программы ожидается ввод данных с помощью функции readln.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д