Валера Гурдуза
S:23:43:16 30.10
R:23:43:19 30.10
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Math;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
EditA: TEdit;
EditW: TEdit;
EditX: TEdit;
EditT: TEdit;
LabelY: TLabel;
LabelGeometricMean: TLabel;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
x, a, w, t, y, g, geometricMean: Real;
intPart: Integer;
begin
// Проверка наличия данных в полях ввода
if (EditX.Text = **) or (EditA.Text = **) or (EditW.Text = **) or (EditT.Text = **) then
begin
ShowMessage(*Пожалуйста, заполните все поля.*);
Exit;
end;
// Попытка преобразовать текстовые значения в числа
try
x := StrToFloat(EditX.Text);
a := StrToFloat(EditA.Text);
w := StrToFloat(EditW.Text);
t := StrToFloat(EditT.Text);
except
on E: EConvertError do
begin
ShowMessage(*Ошибка: проверьте корректность введенных данных.*);
Exit;
end;
end;
// Вычисляем значение g
g := x + 24.8;
// Проверяем допустимость значений для косинуса
if Cos(a * x) = 0 then
begin
ShowMessage(*Ошибка: косинус равен нулю, деление невозможно*);
Exit;
end;
// Вычисляем значение y
y := (Power(x, 2) * Sqrt(Abs(a * x) + Sqrt(Abs(a + x)))) / (4 * Power(Cos(a * x), 2))
+ g * Power(x, 2) + w * t;
// Находим целую часть среднего геометрического y и g
geometricMean := Sqrt(y * g);
intPart := Trunc(geometricMean);
// Отображение результатов
LabelY.Caption := *Результат y: * + FloatToStr(y);
LabelGeometricMean.Caption := *Целая часть среднего геометрического: * + IntToStr(intPart);
end;
end.