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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2012, 15:39   #1
ALABAMA
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 26
По умолчанию Ошибка в программе (invalid floating point operation ?)

Program lab1; {dyhotomichnyi poshuk}
uses crt;
const e=0.001; h=3*e;
var x,a,b,ya,yb:real; i:integer;
begin clrscr;
writeln('Fynksia: y=sqrt(10-exp(ln(x)*3)))');
writeln;
a:=-3; b:=3;
while (b-a)>=e do begin
inc(i);
x:=(a+b)/2;
ya:=sqrt(10-exp(ln(x-h)*3));
yb:=sqrt(10-exp(ln(x+h)*3));
if ya>yb then b:=x+h else
if ya<yb then a:=x-h else break;
end;
textcolor(9);
writeln('x_max=',x:7:5,' y_max=',ya:7:5,', Vukonano: ',i,' iteracii.');
readln;
end.
ALABAMA вне форума Ответить с цитированием
Старый 15.02.2012, 19:00   #2
deathNC
Пользователь
 
Аватар для deathNC
 
Регистрация: 10.01.2010
Сообщений: 44
По умолчанию

Выделяйте программный код тегами [CODE]
Удобнее ведь читать будет!
deathNC вне форума Ответить с цитированием
Старый 15.02.2012, 19:09   #3
deathNC
Пользователь
 
Аватар для deathNC
 
Регистрация: 10.01.2010
Сообщений: 44
По умолчанию

Код:
program lab1; {dyhotomichnyi poshuk}
uses
  crt;
const
  e=0.001;
  h=3*e;
var 
  x, a, b, ya, yb, buffer: Extended;
  i: Integer;
begin
  clrscr;
  writeln('Fynksia: y=sqrt(10-exp(ln(x)*3)))');
  writeln;
  a:=-3;
  b:=3;
  while (b - a) >= e do
    begin
      inc(i);
      x := (a+b) / 2;
      buffer := x - h;
      buffer := 3 * ln(buffer);
      buffer := exp(buffer);
      ya := sqrt(10 - buffer);
      buffer := x + h;
      buffer := 3 * ln(buffer);
      buffer := exp(buffer);
      yb := sqrt(10 - buffer);
      If ya>yb then
        b:=x+h
      else if ya < yb then
        a:=x-h
      else
        break;
    end;
  TextColor(9);
  WriteLn('x_max=',x:7:5,' y_max=',ya:7:5,', Vukonano: ',i,' iteracii.');
  ReadLn;
end.
Происходит переполнение при выполнении операции с плавающей точкой. Попробуй этот код, тут вероятность ошибки должна быть меньше.
deathNC вне форума Ответить с цитированием
Старый 15.02.2012, 19:18   #4
deathNC
Пользователь
 
Аватар для deathNC
 
Регистрация: 10.01.2010
Сообщений: 44
По умолчанию

Ещё вероятно, что под знаком логарифма появляется не положительное число - это не допустимо.
Но от этого уже сам отлаживай программу
deathNC вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка Invalid floating point operation ksv1991 Помощь студентам 0 10.08.2011 16:42
Invalid floating point operation ужасная ошибка ВСЁПРОСТО Помощь студентам 3 24.08.2010 15:32
Ошибка: invalid floating point operation Willow Помощь студентам 3 24.01.2010 18:42
Вылезает ошибка with massage 'Invalid floating point operation' подскажите как устранить. Herly Помощь студентам 2 09.01.2010 18:56
Возникает ошибка Invalid floating point operation Иринкаа Помощь студентам 3 29.11.2007 22:10