program EsperimentiDaFile;
const
NumeroEsperimenti = 10;
type
TipoData = record
giorno : 1..31;
mese : 1..12;
anno : integer
end;
TipoEsperimento = record
data : TipoData;
risultato : real
end;
TipoEsperimenti = array [1..NumeroEsperimenti] of TipoEsperimento;
TipoFileEsperimenti = file of TipoEsperimento;
procedure LeggiEsperimenti (var esperimenti: TipoEsperimenti);
var
i : integer;
f : TipoFileEsperimenti;
nome : string;
begin
write('Immetti il nome del file di record che contiene i risultati!');
readln(nome);
Assign(f, nome);
Reset(f);
i := 0;
while not eof(f) do
begin
i := i + 1;
read(f, esperimenti[i])
end;
Close(f)
end;
function MediaEsperimenti (esperimenti: TipoEsperimenti): real;
var
somma : real;
i : integer;
begin
somma := 0;
for i := 1 to NumeroEsperimenti do
somma := somma + esperimenti[i].risultato;
MediaEsperimenti := somma / NumeroEsperimenti
end;
procedure StampaEsperimentiSottoSoglia(esperimenti : TipoEsperimenti;
soglia : real);
var
i : integer;
f : text;
nome : string;
begin
write('Immetti il nome del file di testo su cui stampare!');
readln(nome);
Assign(f, nome);
Rewrite(f);
for i := 1 to NumeroEsperimenti do
with esperimenti[i] do
if risultato < soglia then
writeln(f, data.giorno:2, '/', data.mese:2, '/', data.anno:4,
risultato:10:2);
Close(f)
end;
procedure ScriviEsperimenti;
var
i : integer;
esperimento : TipoEsperimento;
f : TipoFileEsperimenti;
nome : string;
begin
write('Immetti il nome del file di record su ci scrivere i risultati!');
readln(nome);
Assign(f, nome);
Rewrite(f);
for i := 1 to NumeroEsperimenti do
begin
write('Esperimento ', i:2, ': data (g,m,a)? ');
with esperimento.data do readln(giorno, mese, anno);
write(' : risultato? ');
readln(esperimento.risultato);
write(f, esperimento)
end;
Close(f)
end;
var
esp : TipoEsperimenti;
begin
LeggiEsperimenti(esp);
StampaEsperimentiSottoSoglia(esp, 0.5*MediaEsperimenti(esp))
end.