![]() |
|
|
|
|
#1
|
|||
|
|||
|
Вечер добрый ребят, помогите пожалуйста подключить модуль функции чтобы работали функции S(x), Y(x) сижу мучаюсь не знаю как подключить и как прописать одно в другое...
Код программы: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Button1: TButton;
RadioGroup1: TRadioGroup;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
xn = 0.1;
xk = 0.5;
h = 0.1;
e = 0.0001;
var
x, y, t, s: real;
n: Integer;
begin
Memo1.Clear;
Memo1.Lines.Add('Результаты ст. гр. 5В011100 Гулов Е.В.');
Memo1.Lines.Add('xn=0.1');
Memo1.Lines.Add('xk=0.5');
Memo1.Lines.Add('h=0.1');
Memo1.Lines.Add('e=0.0001');
x := xn;
while x <= xk do
begin
n := 0;
t := x;
s := t;
while Abs(t) / (2 * n + 1) > e do
begin
n := n + 1;
t := -t * x * x;
s := s + t / (2 * n + 1);
end;
y := arctan(x);
Memo1.Lines.Add('При х=' + formatfloat('0.0', x) + ' сумма=' + formatfloat
('0.0000', s) + ' y=' + formatfloat('0.0000', y) + ' N=' + inttostr
(n + 1));
x := x + h;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
RadioGroup1.ItemIndex:=0;
end;
end.код модуля Код:
unit Unit2;
interface
uses StdCtrls, SysUtils;
Type
fun = function(x : extended):extended; // Объявление типа функция
{Расчет таблицы функции f (табуляция функции)}
procedure Tabl(f:fun;xn,xk:extended; m: word; Memo1 : TMemo);
implementation
procedure Tabl;
var x,y,h: extended;
i : integer;
begin
x:=xn; h:=(xn-xk)/m;
for i:=1 to m+1 do begin
y:=f(x);
Mem1.Lines.Add(' x='+FloatToStrf(x,fffixed,8,3)+
' y='+FloatToStrf(y,fffixed,8,3));
x:=x+h;
end;
end;
end. |
|
#2
|
|||
|
|||
|
не вижу кода функций S(x) и Y(x)
|
|
#3
|
|||
|
|||
|
Куда и как прописать их!?
|
|
#4
|
||||
|
||||
|
Код:
unit Unit1;
...
{$R *.dfm}
uses
Unit2;
... |
|
#5
|
|||
|
|||
|
как прописать функции
Безымянный.jpg Последний раз редактировалось Tupiy, 14.11.2016 в 12:41. |
|
#6
|
|||
|
|||
|
как прописать его их?*
Безымянный.png |
|
#7
|
||||
|
||||
|
Примерно так, но поскольку кроме объявы нет самого тела функции типа fun, работать полностью (в положении Y(x)) это не будет
|
|
#8
|
|||
|
|||
|
а можешь кодом просто написать?
|
|
#9
|
||||
|
||||
|
Код:
...
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
var
xn, xk, h, e, x, y, t, s: real;
n: Integer;
begin
xn:= StrToFloat(Edit1.Text);// 0.1;
xk:= StrToFloat(Edit2.Text);//0.5;
h := StrToFloat(Edit3.Text);//0.1;
e := StrToFloat(Edit4.Text);//0.0001;
Memo1.Clear;
Memo1.Lines.Add('Результаты ст. гр. 5В011100 Гулов Е.В.');
Memo1.Lines.Add('xn='+ Edit1.Text);
Memo1.Lines.Add('xk='+ Edit2.Text);
Memo1.Lines.Add('h=' + Edit3.Text);
Memo1.Lines.Add('e=' + Edit4.Text);
if RadioGroup1.ItemIndex = 0 then
begin
x := xn;
while x <= xk do
begin
n := 0;
t := x;
s := t;
while Abs(t) / (2 * n + 1) > e do
begin
n := n + 1;
t := -t * x * x;
s := s + t / (2 * n + 1);
end;
y := arctan(x);
Memo1.Lines.Add('При х=' + formatfloat('0.0', x) + ' сумма=' + formatfloat
('0.0000', s) + ' y=' + formatfloat('0.0000', y) + ' N=' + inttostr
(n + 1));
x := x + h;
end;
end else
Tabl(nil {должна быть типа fun} , xn, xk, 10 {для примера}, Memo1);
end; |