64 lines
1.4 KiB
ObjectPascal
64 lines
1.4 KiB
ObjectPascal
uses FormsABC;
|
|
|
|
type Fun = function (x: real): real;
|
|
|
|
var funs: array of Fun := (sin,cos,sqr);
|
|
|
|
function CalcIntegral(a,b: real; N: integer; f: Fun): real;
|
|
begin
|
|
Result := 0;
|
|
var x := a;
|
|
var h := (b-a)/N;
|
|
for var i:=0 to N-1 do
|
|
begin
|
|
Result += f(x);
|
|
x += h;
|
|
end;
|
|
Result *= h;
|
|
end;
|
|
|
|
var
|
|
a := new RealField('a:');
|
|
f1 := new FlowBreak;
|
|
b := new RealField('b:');
|
|
f2 := new FlowBreak;
|
|
N := new IntegerField('N:');
|
|
f3 := new FlowBreak;
|
|
tl := new TextLabel('Функция: ');
|
|
f4 := new FlowBreak;
|
|
cb := new ComboBox;
|
|
f5 := new FlowBreak(50);
|
|
s1 := new Space(20);
|
|
ok := new Button('Вычислить');
|
|
tb: TextBox;
|
|
|
|
procedure MyClick;
|
|
begin
|
|
var f := funs[cb.SelectedIndex];
|
|
var res := CalcIntegral(a.Value,b.Value,N.Value,f);
|
|
tb.AddLine(Format('Интеграл({0},{1},{2},{3}) = {4}',a.Value,b.Value,N.Value,cb.SelectedValue,res.ToString));
|
|
end;
|
|
|
|
procedure InitControls;
|
|
begin
|
|
MainForm.Title := 'Вычисление определенного интеграла';
|
|
MainForm.SetSize(500,350);
|
|
MainForm.CenterOnScreen;
|
|
b.Value := 1;
|
|
N.Value := 10;
|
|
cb.Items.Add('sin');
|
|
cb.Items.Add('cos');
|
|
cb.Items.Add('x^2');
|
|
cb.SelectedIndex := 0;
|
|
ok.Click += MyClick;
|
|
mainPanel.Dock := DockStyle.Left;
|
|
mainPanel.Width := 150;
|
|
|
|
ParentControl := MainForm;
|
|
tb := new TextBox;
|
|
tb.Dock := DockStyle.Fill;
|
|
end;
|
|
|
|
begin
|
|
InitControls;
|
|
end. |