Працюємо за комп'ютером
Завдання. Створіть проект для розв'язування
задачi: Перед початком повені рівень води у річці
становив н м. Під час повенi кожну годину рiвень
води зростав на Р % від рівня попередньоï години.
Яким буде рiвень води через N годин після
початку повені? (Програма повинна перевіряти
правильність заповнення полів)

Ответы

Ответ дал: mixail0809
0

unit Main;

{$mode objfpc}{$H+}

interface

uses

 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

 { TForm1 }

 TForm1 = class(TForm)

   Button1: TButton;

   Edit1: TEdit;

   Edit2: TEdit;

   Edit3: TEdit;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Memo1: TMemo;

   procedure Button1Click(Sender: TObject);

 private

   function CalculateWaterLevel(startLevel: Double; growthRate: Double; hours: Integer): Double;

   function ValidateInput(): Boolean;

 public

   { public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

function TForm1.ValidateInput(): Boolean;

var

 startLevel, growthRate: Double;

 hours: Integer;

begin

 Result := True;

 if not TryStrToFloat(Edit1.Text, startLevel) or (startLevel < 0) then

 begin

   ShowMessage('Please enter a valid starting water level (a non-negative number)');

   Result := False;

   Exit;

 end;

 if not TryStrToFloat(Edit2.Text, growthRate) or (growthRate < 0) then

 begin

   ShowMessage('Please enter a valid growth rate (a non-negative number)');

   Result := False;

   Exit;

 end;

 if not TryStrToInt(Edit3.Text, hours) or (hours < 0) then

 begin

   ShowMessage('Please enter a valid number of hours (a non-negative integer)');

   Result := False;

   Exit;

 end;

end;

function TForm1.CalculateWaterLevel(startLevel: Double; growthRate: Double; hours: Integer): Double;

begin

 Result := startLevel * Power((1 + growthRate / 100), hours);

end;

procedure TForm1.Button1Click(Sender: TObject);

var

 startLevel, growthRate: Double;

 hours: Integer;

 waterLevel: Double;

begin

 if ValidateInput() then

 begin

   startLevel := StrToFloat(Edit1.Text);

   growthRate := StrToFloat(Edit2.Text);

   hours := StrToInt(Edit3.Text);

   waterLevel := CalculateWaterLevel(startLevel, growthRate, hours);

   Memo1.Lines.Add(Format('After %d hours, the water level will be %.2f meters', [hours, waterLevel]));

 end;

end;

end.

Вас заинтересует