Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

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

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


Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2016, 12:24   #1
Алиби
Пользователь
 
Регистрация: 23.11.2016
Сообщений: 31
По умолчанию First chance exception at $754F845D. Exception class EInvalidOp with message 'Invalid floating point operation'. Process Project1.exe (5832)

пишу программу решения по методу хорд
вышла ошибка при компиляции
First chance exception at $754F845D. Exception class EInvalidOp with message 'Invalid floating point operation'. Process Project1.exe (5832)
Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Button1: TButton;
    function f(x:real):real;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  a,b,c,x,e,g:real;
  n:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.Text:=FloatToStr(a);
Edit2.Text:=FloatToStr(b);
Edit3.Text:=FLoatToStr(e);
n:=0;
c:=a;
repeat
  N:=n+1;
  g:=c;
    c:=(a*f(b)-b*f(a))/(f(b)-f(a));
  if f(a)*f(c)<0 then b:=c
  else
  a:=c;
  until abs(g-c)<e;
  label1.Caption:=floatToStr(c);
  Label1.Caption:=FloatTOStr(n);
end;
function TForm1.f(x: real): real;
begin
f:=x*x*x-x+4;
end;
end.
Алиби вне форума Ответить с цитированием
Старый 23.11.2016, 12:33   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Цитата:
c:=(a*f(b)-b*f(a))/(f(b)-f(a))
при первой же итерации это даст деление на ноль: b=a=0
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.11.2016, 12:47   #3
Алиби
Пользователь
 
Регистрация: 23.11.2016
Сообщений: 31
По умолчанию

А как можно решить эту проблему не подскажите пожалуйста
Алиби вне форума Ответить с цитированием
Старый 23.11.2016, 12:52   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Начальные значения им задать, при чем разные, иначе опять на нуль разделишь.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.11.2016, 13:17   #5
Алиби
Пользователь
 
Регистрация: 23.11.2016
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Начальные значения им задать, при чем разные, иначе опять на нуль разделишь.
Спасибо, буду разбираться

Цитата:
Сообщение от Аватар Посмотреть сообщение
Начальные значения им задать, при чем разные, иначе опять на нуль разделишь.
не получается что то или я не правильно понял)можете в мой код подсказать чему присвоить значение и где нужно вставить этот код и если можно то в моем коде а если нет то дайте пожалуйста ссылку на похожий пример я сам изучу но конечно лучше в моем коде показать))))

Последний раз редактировалось Аватар; 23.11.2016 в 13:22.
Алиби вне форума Ответить с цитированием
Старый 23.11.2016, 13:26   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Перед циклом вставить, где же еще. А что бы правильно вставить нужно знать что вообще твой суперкод делает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.11.2016, 05:17   #7
Алиби
Пользователь
 
Регистрация: 23.11.2016
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Перед циклом вставить, где же еще. А что бы правильно вставить нужно знать что вообще твой суперкод делает
нашел ответ и дело оказалось не в этом, а
Код:
 Edit1.Text:=FloatToStr(a);
Edit2.Text:=FloatToStr(b);
Edit3.Text:=FLoatToStr(e);
не правильно присвоил)
Алиби вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
'Invalid floating point operation'. process stopped. Use Step or Run to continue. manick Общие вопросы Delphi 12 26.11.2011 20:37
exception class EDatabaseError with message 'IBTable: Cannot perform this operation on a closed dataset' Process stopped Belarusn БД в Delphi 12 15.08.2011 18:56
ошибка raized exception class EListError with message 'List index out of bounds(1)'.Process stopped SGRaptor Софт 0 22.05.2010 18:12
Project Project1.exe raised exception class EnvalidOP Rock'n'rolla Безопасность, Шифрование 16 20.01.2010 18:39
"Project Project1.exe raised class EConvertError with message'''is not a valid floating point value'." Doz1metr Помощь студентам 9 24.06.2009 18:06

Реклама для незарегистрированных, регистрация на форуме