unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, UFunction, jpeg, ExtCtrls, TeeProcs, TeEngine, Chart,
Series;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Edit4: TEdit;
Edit5: TEdit;
Button2: TButton;
Button3: TButton;
CheckBox1: TCheckBox;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label7: TLabel;
Button5: TButton;
Button4: TButton;
Label8: TLabel;
Label9: TLabel;
Edit6: TEdit;
Edit7: TEdit;
Button6: TButton;
Button7: TButton;
Label10: TLabel;
Edit8: TEdit;
Button8: TButton;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit5Enter(Sender: TObject);
procedure Edit1Enter(Sender: TObject);
procedure Edit2Enter(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
OldFStroka: string;
a, b: extended;//границы интегрирования
nc: integer;//разбить на nc частей
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in['0'..'9', 'a'..'z', #8, #13, '-', '+', '*', '/', '^', ',', '.', '(', ')'])then key:=#0;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in['0'..'9', #8, '-', 'E', 'e', ',', '.']) then key:=#0;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in['0'..'9', #8, '-', 'E', 'e', ',', '.']) then key:=#0;
end;
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in['0'..'9', #8]) then key:=#0;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
LoadKeyboardLayout('00000419', KLF_ACTIVATE);//русский
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
LoadKeyboardLayout('00000409', KLF_ACTIVATE);//английский
end;
procedure TForm1.Edit5Enter(Sender: TObject);
begin
if Form1.CheckBox1.Checked = true then
LoadKeyboardLayout('00000409', KLF_ACTIVATE);//английский
end;
procedure TForm1.Edit1Enter(Sender: TObject);
begin
if Form1.CheckBox1.Checked = true then
LoadKeyboardLayout('00000409', KLF_ACTIVATE);//английский
end;
procedure TForm1.Edit2Enter(Sender: TObject);
begin
if Form1.CheckBox1.Checked = true then
LoadKeyboardLayout('00000409', KLF_ACTIVATE);//английский
end;
procedure Pr;
begin
FStroka:=Form1.Edit5.Text;
if length(OldFStroka) = 0 then
begin
CreateSh;
OldFStroka:=FStroka;
end else
if OldFStroka <> FStroka then
begin
DeleteSh;
CreateSh;
OldFStroka:=FStroka;
end;
end;
function Log: boolean;
begin
if Form1.Edit5.Text <> '' then Log:=true else Log:=false;
if Form1.Edit1.Text <> '' then a:=strtofloat(Form1.Edit1.Text) else
Log:=false;
if Form1.Edit2.Text <> '' then b:=strtofloat(Form1.Edit2.Text) else
Log:=false;
if Form1.Edit4.Text <> '' then nc:=strtoint(Form1.Edit4.Text) else
Log:=false;
end;
function IntegralSimpson: extended;//формула Симпсона
var c0, c1, c2, c3, dx: extended;
i: integer;
k: real;
begin
c0:=(b-a)/(3*nc);
c1:=(F(a)+F(b))/2;
dx:=(b-a)/nc;
c2:=0; i:=0;
repeat
i:=i+1;
c2:=c2+F(a+dx*i);
until i = nc-1;
c3:=0; k:=-0.5;
repeat
k:=k+1;
c3:=c3+F(a+dx*k);
until k = nc-0.5;
IntegralSimpson:=c0*(c1+c2+2*c3);
end;
function IntegralPrmg: extended;//формула прямоугольников
var sum, dx: extended;
k: real;
begin
dx:=(b-a)/nc;
sum:=0; k:=-0.5;
repeat
k:=k+1;
sum:=sum+F(a+dx*k);
until k = (2*nc-1)/2;
IntegralPrmg:=dx*sum;
end;
function IntegralTrap: extended;//формула трапеций
var dx, c0, c1: extended;
i: integer;
begin
dx:=(b-a)/nc;
c0:=(F(a)+F(b))/2;
c1:=0; i:=0;
repeat
i:=i+1;
c1:=c1+F(a+dx*i);
until i = nc-1;
IntegralTrap:=dx*(c0+c1);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Pr;
if Log then
Form1.Edit3.Text:=floattostr(IntegralSimpson);
Form1.Edit6.Text:=floattostr(IntegralPrmg);
Form1.Edit7.Text:=floattostr(IntegralTrap);
end;
procedure TForm1.Button5Click(Sender: TObject); //процедура сохранения результата в файл
var F,F1,F2: TextFile;
S,S1,S2: String;
begin
AssignFile(F, 'Метод симпсона.txt');
Rewrite(F);
Writeln (F, 'Метод симпсона');
Write(F, 'Интеграл равен=');
S := Edit3.Text;
Write(F,S);
CloseFile(F);
AssignFile(F1, 'Метод прямоугольников.txt');
Rewrite(F1);
Writeln (F1, 'Метод прямоугольников');
Write(F1, 'Интеграл равен=');
S1 := Edit6.Text;
Write(F1,S1);
CloseFile(F1);
AssignFile(F2, 'Метод трапеций.txt');
Rewrite(F2);
Writeln (F2, 'Метод трапеций');
Write(F2, 'Интеграл равен=');
S2 := Edit7.Text;
Write(F2,S2);
CloseFile(F2);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
close
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Form3.Show;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
Form2.Show;
end;
end.