Неверная вещественная операция и деление на ноль, как исправить? - 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.

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

  1. В начале кода объявлены константы и переменные: — a, b — целочисленные константы со значениями -2 и 2 соответственно; — c — вещественная константа со значением 0.2; — x, y, max, min — переменные типа real.
  2. Далее в блоке begin происходит инициализация переменной x значением a.
  3. Затем в блоке begin происходит вычисление значения переменной y по формуле x*x+sqr(sin((x+pi)/2)/cos((x+pi)/2)).
  4. Значения переменных max и min инициализируются значением переменной y.
  5. Далее в цикле 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).
  6. В каждой итерации цикла проверяется, является ли значение переменной y больше max, если да, то max присваивается значение переменной y, иначе проверяется, является ли значение переменной y меньше min, если да, то min присваивается значение переменной y.
  7. Выводится значение переменной y с шагом 0.1, значение переменной x увеличивается на c.
  8. После окончания цикла repeat выводится значение переменных max и min.
  9. В конце программы ожидается ввод данных с помощью функции readln.

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


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

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

13   голосов , оценка 3.615 из 5
Похожие ответы