Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2013, 00:12   #1
Sting95
Пользователь
 
Регистрация: 13.08.2013
Сообщений: 23
По умолчанию Неверная вещественная операция и деление на ноль, как исправить?

Есть задача: Вычислить и вывести значение функции при изменении значения аргумента от А до В с шагом С и определить минимальное и максимальное значение функции на отрезке. Использовать в одной программе три различных типа простых циклов (IF THEN GOTO, WHILE-DO, REPEAT-UNTIL). Мой вариант задачи на скриншоте, а=-2, b=2, шаг с=0.2.
В строке 30 пишет: Неверная вещественная операция, в строке 82 деление на ноль, как исправить? сделать через Паскаль.

Код:
Код:
program laba2;
uses crt;
label lp1;
var y,ymax,ymin,fx,a,b,c,x:real;
    N:integer;
begin
writeln('1. if then goto');
writeln('2. while do');
writeln('3. repeat until');
writeln('Your choose:');
readln(N);
Case N of 1:
 begin
 writeln('Ведите значение a,b і шаг c');
 write('a=');
 readln(a);
 write('b=');
 readln(b);
 write('c=');
 readln(c);
 begin
  x:=a;
  y:=sqr(x)+sin(sqr(x))/cos(sqr(x))*(x+pi/2);
  ymax:=y;
  ymin:=y;
  lp1:if x<=b then
  begin
  if x<=-0.5 then y:=sqr(x)+sin(sqr(x))/cos(sqr(x))*(x+pi/2);
  if (x>-0.5) and (x<=0.5) then y:=cos(exp(ln(abs(x+ln(abs(x))*(1/5)))));
  if x>0.5 then y:=exp(ln(x+exp(x)*sqrt(x+1)-pi)*(1/3)); /// Неверная вещественная операция
  if y>ymax then ymax:=y;
  if y<ymin then ymin:=y;
  writeln('x=',x:1:1,'                         y=',y:1:1);
  writeln('Максимальне=',ymax:3:3,'       Мінімальне=',ymin:3:3);
  writeln;
  x:=x+c; goto lp1;
  end;
  end;
  end;
  end;
  Case N of 2:
   begin
 writeln('Ввести значення a,b і крок c');
 write('a=');
 readln(a);
 write('b=');
 readln(b);
 write('c=');
 readln(c);
    begin
  x:=a;
  y:=sqr(x)+sin(sqr(x))/cos(sqr(x))*(x+pi/2);
  ymax:=y;
  ymin:=y;
  while x<=b do
     begin
  if x<=-0.5 then y:=sqr(x)+sin(sqr(x))/cos(sqr(x))*(x+pi/2);
  if (x>-0.5) and (x<=0.5) then y:=cos(exp(ln(abs(x+ln(abs(x))*(1/5)))));
  if x>0.5 then y:=exp(ln(x+exp(x)*sqrt(x+1)-pi)*(1/3));
  if y>ymax then ymax:=y;
  if y<ymin then ymin:=y;
  writeln('x=',x:1:1,'                         y=',y:1:1);
  writeln('Максимльне=',ymax:3:3,'       Мінімальне=',ymin:3:3);
  writeln;
  x:=x+c;
     end;
    end;
   end;
  end;
  Case N of 3:
    begin
 writeln('Ввести значення a,b і крок c');
 write('a=');
 readln(a);
 write('b=');
 readln(b);
 write('c=');
 readln(c);
     begin
      repeat
      if x<=-0.5 then y:=sqr(x)+sin(sqr(x))/cos(sqr(x))*(x+pi/2);
      if (x>-0.5) and (x<=0.5) then y:=cos(exp(ln(abs(x+ln(abs(x))*(1/5)))));/// деление на ноль
      if x>0.5 then y:=exp(ln(x+exp(x)*sqrt(x+1)-pi)*(1/3));
      if y>ymax then ymax:=y;
      if y<ymin then ymin:=y;
      writeln('x=',x:1:1,'                         y=',y:1:1);
      writeln('Максимльне=',ymax:1:2,'       Мінімальне=',ymin:1:2);
      writeln;
      x:=x+c;
      until x<b;
     end;
    end;
  end;
  end.
Изображения
Тип файла: jpg rge.jpg (19.5 Кб, 105 просмотров)
Sting95 вне форума Ответить с цитированием
Старый 22.10.2013, 01:13   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ln(0) чему равен? Прога небось тоже в легкой панике от полной неопределенности
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Деление на ноль LLIALLIJIbIK Общие вопросы Delphi 19 14.04.2013 20:33
Деление на ноль LLIALLIJIbIK Общие вопросы Delphi 1 14.04.2013 17:15
Неверная вещественная операция PascalABC notter Помощь студентам 0 24.05.2011 17:30
Деление на ноль Bearw08 Свободное общение 26 18.03.2009 18:39
Деление на ноль! Hacker19_90 Паскаль, Turbo Pascal, PascalABC.NET 7 01.10.2008 22:59