Проверить на ошибки
Разработать приложение, поддерживающее различные способы управления вычислительным процессом с помощью TPageControl, TTabSheet, TСhart, стандартных диалоговых компонентов, ТPopupMenu, TMainMenu, TToolBar.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls, Grids, Math, TeeProcs, TeEngine, Chart,
Series, Menus, ComCtrls, IniFiles;
type
TFunction = function(x: Double): Double;
TMainForm = class(TForm)
MathematicalTaskImage: TImage;
MathematicalTaskLabel: TLabel;
FunctionStepLabel: TLabel;
FunctionStepEdit: TEdit;
FunctionChart: TChart;
Series1: TLineSeries;
MainMenu: TMainMenu;
EnterIntervalStartMenuItem: TMenuItem;
EnterIntervalEndMenuItem: TMenuItem;
DrawChartMenuItem: TMenuItem;
PageControl: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
procedure EnterIntervalStartMenuItemClick(Sender: TObject);
procedure EnterIntervalEndMenuItemClick(Sender: TObject);
procedure DrawChartMenuItemClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
xStart, xEnd: Double;
ConfigFile: TIniFile;
ConfigFileDirectory: String;
implementation
uses Unit2;
{$R *.dfm}
function Factorial(n: Integer): Integer;
begin
if n = 0 then
result := 1
else
result := n*Factorial(n - 1);
end;
function Func(x: Double): Double;
var
s, an: Double;
n: Integer;
begin
s := 0;
an := 1;
n := 0;
while an >= 0.001 do
begin
an := ((2*n + 1)/Factorial(n))*power(x, 2*n);
s := s + an;
inc(n);
end;
result := s;
end;
procedure ShowResult(f: TFunction; xStart, xEnd: Double);
var
x, y, h: Double;
n: Integer;
begin
MainForm.Series1.Clear;
h := (xEnd - xStart)/9;
MainForm.FunctionStepEdit.Text := FloatToStrF(h, ffFixed, 10, 2);
x := xStart;
for n := 0 to 9 do
begin
y := f(x);
MainForm.Series1.AddXY(x, y);
x := x + h;
end;
end;
procedure TMainForm.EnterIntervalStartMenuItemClick(Sender: TObject);
begin
InputForm.InputLabel.Caption := 'Введите начало интервала (Xs):';
InputForm.InputEdit.Clear;
InputForm.ShowModal;
xStart := StrToFloat(InputForm.InputEdit.Text);
ConfigFile.WriteString('Init', 'xStart', FloatToStrF(xStart, ffFixed, 10, 2));
end;
procedure TMainForm.EnterIntervalEndMenuItemClick(Sender: TObject);
begin
InputForm.InputLabel.Caption := 'Введите конец интервала (Xe):';
InputForm.InputEdit.Clear;
InputForm.ShowModal;
xEnd := StrToFloat(InputForm.InputEdit.Text);
ConfigFile.WriteString('Init', 'xEnd', FloatToStrF(xEnd, ffFixed, 10, 2));
end;
procedure TMainForm.DrawChartMenuItemClick(Sender: TObject);
begin
ShowResult(Func, xStart, xEnd);
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
ConfigFileDirectory := GetCurrentDir;
ConfigFile := TIniFile.Create(ConfigFileDirectory + '\Config.ini');
xStart := StrToFloat(ConfigFile.ReadString('Init', 'xStart', '1'));
xEnd := StrToFloat(ConfigFile.ReadString('Init', 'xEnd', '1'));
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ConfigFile.Free;
end;
end.