Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.12.2011, 22:34
Helene Rolles Helene Rolles вне форума
Прохожий
 
Регистрация: 18.12.2011
Сообщения: 1
Репутация: 10
По умолчанию Помогите исправить программу

Помогите пожалуйста исправить программу
1.)2 ошибки выделены в коде (floating point division by zero ),но исправить не получается
2.)то,что под Button3-не работает совсем(не ошибок не выводи,ничего.пустота)
Заранее огромное спасибо.

PHP код:
unit Unit1;
 
interface
 
uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrlsChartSeriesExtCtrlsmathTeeProcsTeEngineTeeFunci;
 
type
  TForm1 
= class(TForm)
    
Button1TButton;
    
Edit1TEdit;
    
Edit2TEdit;
    
Button2TButton;
    
Edit3TEdit;
    
Button3TButton;
    
Label1TLabel;
    
Label2TLabel;
    
procedure Button1Click(SenderTObject);
    
procedure Button2Click(SenderTObject);
    
procedure Button3Click(SenderTObject);
   
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;
 
const
    
pi=3.1415;
var
  
Form1TForm1;
  
x,max,y:real;
  
ttchart;
implementation
 
{$R *.dfm}
 
function 
f(x:real):real;
begin
f
:=(x*x)*(sin(power(x,1/3))-3);
end;
 
function 
d(x:real):real;
begin
d
:=(1/3)*(power(x,4/3))*(cos(power(x,1/3)))+(2*x)*(sin(power(x,1/3))-3);
end;
 
function 
d1(x:real):real;
begin
d1
:=(-(1/81))*((16*sin(power(x,1/3))*(power(x,5/3))+56*(power(x,4/3))*cos(power(x,1/3))-sin(power(x,1/3))*(power(x,7/3))+12*(power(x,2))*cos(power(x,1/3)))/(power(x,3)));
end;
 
function 
f1(x:real):real;
begin
f1
:=(-1)-(1*x)-(0.1*x*x)+(1*x*x*x)+(1*x*x*x*x)+(1*x*x*x*x*x);
end;
 
function 
f2(t,x:real):real;
begin
f2
:=t*sin(t*t+x*t);
end;
 
procedure TForm1.Button1Click(SenderTObject);
var 
n,i:integer;
a,b:real;
e,h,x1,x2,s,s1,p,pr:real;
begin
t
.Free;
t:= TChart.Create(Form1);
t.Parent := Form1;
t.AddSeries(TlineSeries.Create(t));
t.AddSeries(TlineSeries.Create(t));
x:=0;
max:=d(x);
while 
x<=do
begin
y
:=d(x);
if 
y>max then max:=y;
x:=x+0.000001;
end;
N:=1;
e:=0.000001;
a:=pi/4;
b:=pi/2;
s:=0;
s1:=0;
 for 
:= 1 to N do
 
begin
 h
:=(b-a);
 
x1:=a+i*h;
 
x2:=x1-0.5*h;
 
s:=s+f(x2)*h;
 
end;
  
repeat
  s
:=s1;
  
s1:=0;
  
N:=N*2;
  
h:=h/2;
   for 
:= 1 to N do
   
begin
   x1
:=a+i*h;
   
x2:=x1-0.5*h;
   
s1:=s1+f(x2)*h;
   
end;
  
p:=((h*h*(b-a))/24)*max;
  
pr:=(s1-s)/(3);
  
t.Series[0].AddXY(ln(h),ln(abs(pr)),'');
  
t.Series[1].AddXY(ln(h),ln(abs(p)),'');   //floating point division by zero 
 
  
until abs(p)<e;
edit1.Text:=floattostr(abs(s1));
end;
 
procedure TForm1.Button2Click(SenderTObject);
var 
n,i:integer;
a,b:real;
e,s,s1,h,p,x1,x2,pr:real;
begin
t
.Free;
t:= TChart.Create(Form1);
t.Parent := Form1;
t.AddSeries(TlineSeries.Create(t));
t.AddSeries(TlineSeries.Create(t));
a:=pi/4;
b:=pi/2;
N:=1;
e:=0.000001;
s:=0;
s1:=0;
h:=(b-a)/N;
 for 
:= 1 to N do
 
begin
 x1
:=a+(i-1)*h;
 
x2:=a+i*h;
 
s:=s+((f(x1)+f(x2))*h)/2;
 
end;
  
repeat
  s
:=s1;
  
s1:=0;
  
N:=N*2;
  
h:=(b-a)/N;
   for 
:= 1 to N do
   
begin
   x1
:=a+(i-1)*h;
   
x2:=a+i*h;
   
s1:=s1+(f(x1)+f(x2))*h*0.5;
   
end;
  
pr:=(s1-s)/(3);
  
p:=((h*h*(b-a))/12)*max;
 
t.Series[0].AddXY(ln(h),ln(abs(pr)),'');
  
t.Series[1].AddXY(ln(h),ln(abs(p)),'');//floating point division by zero 
  
until abs(p)<e;
edit2.Text:=floattostr(abs(s1));
end;
 
procedure TForm1.Button3Click(SenderTObject);
var 
i,N:integer;
a,b:real;
e,h,s,s1,p,n2,pr:real;
begin
t
.Free;
t:= TChart.Create(Form1);
t.Parent := Form1;
t.AddSeries(TlineSeries.Create(t));
t.AddSeries(TlineSeries.Create(t));
x:=0;
max:=d1(x);
while 
x<=do
begin
y
:=d1(x);
if 
y>max then max:=y;
x:=x+0.000001;
end;
N:=2;
e:=0.000001;
a:=pi/4;
b:=pi/2;
h:=(b-a)/N;
 for 
i:=1 to trunc(n) do
 
s:=s+((f(a+((2*i)-2)*h)+4*f(a+((2*i)-1)*h)+f(a+(2*i)*h))*h)/3;
  
repeat
  h
:=(b-a)/n;
  
n2:=n/2;
  
s:=s1;
  
s1:=0;
   for 
i:=1 to (n div 2) do
   
s1:=s1+((f(a+((2*i)-2)*h)+4*f(a+((2*i)-1)*h)+f(a+(2*i)*h))*h)/3;
  
n:=n*2;
  
pr:=(s1-s)/(15);
  
p:=((h*h*h*h*(b-a))/180)*max;
  
t.Series[0].AddXY(ln(h),ln(abs(pr)),'');
  
t.Series[1].AddXY(ln(h),ln(abs(p)),'');
  
until abs(p)<e;
edit3.Text:=floattostr(abs(s1));
end
end.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:55.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025