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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2010, 17:50   #1
leshij
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 14
По умолчанию Delphi. Ошибка в программе, в чём проблема?

Всем привет!
Вообщем пишу программу, суть чтобы найти корни несколькими методами, всё хорошо, но на последнем методе выкидывает как ошибку на выделенную строчку Floating point overflow

Код:
unit Unit1_3uzd;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    StringGrid2: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;


    vector1=array[0..255] of single;
    vector2=array[1..10]of single;
    vector3=array[1..10] of single;
    yyy=string[255];
    zzz=array[0..2000] of double;
var
  Form1: TForm1;
  x,y:vector1;
  a,b,xk:vector2;
  bh:vector2;
  eps,xmin,xmax,dx:single;
  izz, iter_hordi, iter_dihot, iter_njuton,iter_iteraciji,nk,i,j:byte;
  xkor:vector3;
  xdihot,xnjuton,xiteraciji:yyy;
  zz, xhordi:yyy;
  xt,xn,k:zzz;

implementation

{$R *.dfm}
 function fx(x:single):double;
 begin

  fx:=3*sqr(x)*sqr(x)+4*x*sqr(x)-12*sqr(x)+1;
  end;

 function gx(x:single):double;
  begin
   gx:=(1+3*sqr(x)*sqr(x)+4*x*sqr(x))/12/x;
   end;



 Procedure iteraciji(a:single;var xx:yyy;
                            var itt:byte);
 var    i:integer;
 fc:double;

  begin
    i:=0;

 k[i]:=a;
 repeat
  k[i+1]:=gx(k[i]);
  fc:=fx(k[i+1]); //вот тут ошибка выкидывает
   i:=i+1;
  until   abs(gx(k[i-1]))<eps;

  if abs(fc)>eps then  xx:=floattostrf(k[i+1],fffixed,18,6)
    else
      xx:='net korna';
      itt:=i;

  end;



procedure TForm1.Button2Click(Sender: TObject);
var
 i:byte;
begin
   eps:=strtofloat(edit4.text)
 for i:=1 to nk do
   begin
    iteraciji(a[i],xiteraciji, iter_iteraciji);
    stringgrid2.cells[7,i]:=xiteraciji;
    stringgrid2.cells[8,i]:=inttostr(iter_iteraciji);
  end;
    end;
end.
помогите
leshij вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в чём ошибка артём1 Помощь студентам 1 02.11.2010 01:11
DELPHI. В чём ошибка ? FORMIDRON Помощь студентам 3 01.10.2009 15:58
В чём ошибка? Roman Общие вопросы C/C++ 2 24.12.2008 01:42
В чём ошибка??? pasha_1 Общие вопросы C/C++ 11 25.11.2008 01:26