Новичок
Регистрация: 25.05.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Описание программы, Delphi
Совсем не шарю в Delphi(да и в программировании вообще),а в институте дали задание,описать что обозначает каждая строчка[компонент] в программе.
Программа:вычисления таблицы значений функции Y=f(X,AB) , построение графика, при заданных значениях аргумента Х и параметра А. Параметр В принимает значение, численно равное корню нелинейного уравнения.Входные данные:
Xn – начальное значение аргумента Х
Dx – шаг изменения аргумента Х
N - значений параметра, изменяемого от значения An с шагом Da
An - начальное значение параметра А
Ak – конечное значение параметра А
Da – шаг изменения параметра А
В – параметр, принимающий значение, равное корню нелинейного уравнения
Главная функция:
F:=A*B*(sin(x)*sin(x))/sqrt(x);
Код:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Grids;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Chart1: TChart;
Edit7: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Button1: TButton;
Button2: TButton;
Label9: TLabel;
Label10: TLabel;
procedure Button1Click(Sender: TObject);
procedure Edit6Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function FB(x,e:real):real;
var
x0:real;
begin
repeat
x0:=x;
x:=sqrt(2-exp(-x0));
until(abs(x-x0)<e);
FB:=x;
end;
function F(x,A,B:real):real;
begin
F:=A*B*(sin(x)*sin(x))/sqrt(x);
end;
{procedure Tab(Xn,Dx:real; N,j:integer; B:real; A:mas1);
var
i:integer;
X,Y:real;
begin
X:=Xn;
begin
for i:=j to (N+j) do
begin
if (x<=0) then
begin
StringGrid2.Cells[1,i]:=FloatToStrF(x,fffixed,4,2);
StringGrid2.Cells[2,i]:=FloatToStrF(A[i],fffixed,4,2);
StringGrid2.Cells[3,i]:='Ошибка';
end
else
begin
Y:=F(X,A[i],B);
StringGrid2.Cells[1,i]:=FloatToStrF(x,fffixed,4,2);
StringGrid2.Cells[2,i]:=FloatToStrF(A[i],fffixed,4,2);
StringGrid2.Cells[3,i]:=FloatToStrF(Y,fffixed,9,7);
end;
end;
end;}
procedure TForm1.Button1Click(Sender: TObject);
const
Nmax=20;
type
mas1=array[1..Nmax] of extended;
var
N,i,j,l,k:integer;
Xn,Xk,Dx,B,x,y,e:real;
A:mas1;
begin
for i:=0 to (StrToInt(Edit6.Text)-1) do
begin
Form1.Chart1.Series[i].Active:=True;
end;
x:=StrToFloat(Edit1.Text);
e:=StrToFloat(Edit2.Text);
Xn:=StrToFloat(Edit3.Text);
Xk:=StrToFloat(Edit4.Text);
Dx:=StrToFloat(Edit5.Text);
N:=StrToInt(Edit6.Text);
for i:=1 to N do
begin
A[i]:=StrToFloat(StringGrid1.Cells[1,i]);
end;
l:=Trunc((Xk-Xn)/Dx+1);
StringGrid2.RowCount:=(l*N+1);
StringGrid2.Cells[0,0]:='№';
StringGrid2.Cells[1,0]:='X';
StringGrid2.Cells[2,0]:='A[i]';
StringGrid2.Cells[3,0]:='Y';
for i:=1 to (l*N+1) do
StringGrid2.Cells[0,i]:=IntToStr(i);
B:=FB(x,e);
Edit7.Text:=FloatToStrF(B,fffixed,10,7);
k:=1;
begin
for i:=1 to N do
begin
Xn:=StrToFloat(Edit3.Text);
for j:=1 to l+1 do
begin
X:=Xn;
begin
if (x<=0) then
begin
StringGrid2.Cells[1,k]:=FloatToStrF(x,fffixed,4,2);
StringGrid2.Cells[2,k]:=FloatToStrF(A[i],fffixed,4,2);
StringGrid2.Cells[3,k]:='Ошибка';
k:=k+1;
end
else
begin
Y:=F(X,A[i],B);
StringGrid2.Cells[1,k]:=FloatToStrF(x,fffixed,4,2);
StringGrid2.Cells[2,k]:=FloatToStrF(A[i],fffixed,4,2);
StringGrid2.Cells[3,k]:=FloatToStrF(Y,fffixed,9,7);
Form1.Chart1.Series[i-1].AddXY(x,y);
k:=k+1;
end;
end;
Xn:=Xn+Dx;
end;
end;
end;
end;
procedure TForm1.Edit6Change(Sender: TObject);
var
k,i:integer;
begin
StringGrid1.Cells[0,0]:='№';
StringGrid1.Cells[1,0]:='А';
k:=StrToInt(Edit6.Text);
StringGrid1.RowCount:=(k+1);
for i:=1 to k do
begin
StringGrid1.Cells[0,i]:=IntToStr(i);
Form1.Chart1.AddSeries(TLineSeries.Create(Self));
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Edit7.Text:='';
StringGrid1.Cells[0,0]:='';
StringGrid1.Cells[1,0]:='';
StringGrid1.RowCount:=(3);
for i:=1 to 3 do
begin
StringGrid1.Cells[0,i]:='';
StringGrid1.Cells[1,i]:='';
StringGrid1.Cells[2,i]:='';
end;
StringGrid2.RowCount:=(5);
for i:=1 to 5 do
begin
StringGrid2.Cells[0,i]:='';
StringGrid2.Cells[1,i]:='';
StringGrid2.Cells[2,i]:='';
StringGrid2.Cells[3,i]:='';
StringGrid2.Cells[4,i]:='';
end;
StringGrid2.Cells[0,0]:='';
StringGrid2.Cells[1,0]:='';
StringGrid2.Cells[2,0]:='';
StringGrid2.Cells[3,0]:='';
for i:=0 to (StrToInt(Edit6.Text)-1) do
begin
Form1.Chart1.Series[i].Clear;
Form1.Chart1.Series[i].Active:=False;
end;
end;
end.
Прошу,помогите кто чем может!!!(
|