type
TValuePair =
record
Temp :
Double
;
Press :
Double
;
end
;
TForm1 =
class
(TForm)
Timer1 : TTimer;
btStart : TButton;
btStop : TButton;
private
Vals :
Array
Of
TValuePair;
logging :
Boolean
;
function
P(T :
Double
) :
Double
;
end
;
procedure
TForm1
.
P(T :
Double
) :
Double
;
begin
Result := (T / (T+
200
))*
15
;
end
;
procedure
TForm1
.
Timer1Timer(Sender : TObject);
var
d :
Double
;
begin
if
logging
then
begin
SetLength(Vals,Length(Vals)+
1
);
d := Random *
10
-
5
;
Vals[High(Vals)].Temp := Vals[High(Vals)-
1
] + d;
Vals[High(Vals)].Press := P(Vals[High(Vals)].Temp);
end
;
end
;
procedure
TForm1
.
btStartClick(Sender : TObject);
begin
SetLength(Vals,
1
);
Vals[
0
].Temp := Random *
100
;
Vals[
0
].Press := P(Vals[
0
].Temp);
logging :=
true
;
end
;
procedure
TForm1
.
btStopClick(Sender : TObject);
var
I :
Integer
;
t_avg, p_avg :
Double
;
begin
logging :=
False
;
t_avg :=
0
;
p_avg :=
0
;
For
I := Low(Vals)
To
High(Vals)
Do
Begin
t_avg := t_avg + Vals[i].Temp;
p_avg := p_avg + Vals[i].Press;
End
;
t_avg := t_avg / Length(Vals);
p_avg := p_avg / Length(Vals);
ShowMessage(Format(
'Кол-во отсчетов: %d'
#
13
#
10
'Средне значение температуры: %.3f'
#
13
#
10
'Среднее значение давления: %.3f'
,[Length(Vals),t_avg,p_avg]));
end
;