|
|
#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; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |