Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.
Доброї ночі панове!
Потрібна ваша допомога!
Мені потрібно написати функцію для знаходження середньої швидкості.
Формула: vс = L1 + L2 + L3 + ... Ln / t1 + t2 + t3 + ... tn.
Так як кількість Ln - переміщень і tn - проміжків часу невідома я створив два динамічних масиви.
P, T: Array Of Extended;
Далі я створив функцію типу: Extended, яка на вхід приймає два динамічні масиви того ж типу:
Function TForm1.PhysicalInstantSpeed(Path_Or_Moving, Time: Array Of Extended):Extended;
Var
I: Integer;
Sum_Path_Or_Moving, Sum_Time: Extended;
Begin
For I := 0 To High(Path_Or_Moving) Do
Sum_Path_Or_Moving := Sum_Path_Or_Moving + Path_Or_Moving[i];
For I := 0 To High(Time) Do
Sum_Time := Sum_Time + Time[i];
PhysicalInstantSpeed := Sum_Path_Or_Moving / Sum_Time;
{
Тимчасові рядки для перевірки заповненості масиву. Після перевірки функції
рядки потрібно обовязково прибрати з функції
}
Label3.Caption := 'Час = ' + FloatToStr(Sum_Time);
Label4.Caption := 'Шлях = ' + FloatToStr(Sum_Path_Or_Moving);
Label5.Caption := 'Середня швидкість = ' + FloatToStr(Sum_Path_Or_Moving / Sum_Time);
// Кінець тимчасових рядків
End;
В мене прохання. Гляньте будь ласка своїм професійним поглядом чи функція буде працювати.
Іще питання. Для того щоб перевірити функцію я створив форму куди закинув 6 - Edit, пару Label та кнопку. Та щось не можу зрозуміти як мені з 1, 2, 3-го Edit загнати в мій динамічний масив Р числові значення, і з 4-го по 6-й Edit в масив Т, для перевірки функції???
Ось повний код тестової програми.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Function PhysicalInstantSpeed(Path_Or_Moving, Time: Array Of Extended):Extended;
end;
var
Form1: TForm1;
P, T: Array Of Extended;
implementation
{$R *.dfm}
Function TForm1.PhysicalInstantSpeed(Path_Or_Moving, Time: Array Of Extended):Extended;
Var
I: Integer;
Sum_Path_Or_Moving, Sum_Time: Extended;
Begin
For I := 0 To High(Path_Or_Moving) Do
Sum_Path_Or_Moving := Sum_Path_Or_Moving + Path_Or_Moving[i];
For I := 0 To High(Time) Do
Sum_Time := Sum_Time + Time[i];
PhysicalInstantSpeed := Sum_Path_Or_Moving / Sum_Time;
{
Тимчасові рядки для перевірки заповненості масиву. Після перевірки функції
рядки потрібно обовязково прибрати з функції
}
Label3.Caption := 'Час = ' + FloatToStr(Sum_Time);
Label4.Caption := 'Шлях = ' + FloatToStr(Sum_Path_Or_Moving);
Label5.Caption := 'Середня швидкість = ' + FloatToStr(Sum_Path_Or_Moving / Sum_Time);
// Кінець тимчасових рядків
End;
procedure TForm1.Button1Click(Sender: TObject);
begin // Як заповнити масиви з Edit????
SetLength(P, Length(P) + 1);
P[Length(P)] := StrToFloat(Edit1.Text);
P[Length(P)] := StrToFloat(Edit2.Text);
P[Length(P)] := StrToFloat(Edit3.Text);
SetLength(T, Length(T) + 1);
T[Length(T)] := StrToFloat(Edit4.Text);
T[Length(T)] := StrToFloat(Edit5.Text);
T[Length(T)] := StrToFloat(Edit6.Text);
Label5.Caption := 'Середня швидкість = ' + FloatToStr(PhysicalInstantSpeed(P,T));
end;
end.