program PrezzoCamera;
type
TipoGiorno = 1..31;
TipoMese = 1..12;
TipoStagione = (Primavera, Estate, Autunno, Inverno);
var
giorno : TipoGiorno;
mese : TipoMese;
stagione : TipoStagione;
function InStagione (g: TipoGiorno; m: TipoMese): TipoStagione;
function PrecedeData (g1: TipoGiorno; m1: TipoMese;
g2: TipoGiorno; m2: TipoMese) : boolean;
begin
PrecedeData := (m1 < m2) or ((m1 = m2) and (g1 < g2))
end;
begin
if PrecedeData(g,m,21,3) or PrecedeData(20,12,g,m) then
InStagione := Inverno
else if PrecedeData(g,m,21,6) then
InStagione := Primavera
else if PrecedeData(g,m,21,9) then
InStagione := Estate
else
InStagione := Autunno
end;
procedure StampaStagione (s: TipoStagione);
begin
case s of
Primavera : write('primavera');
Estate : write('estate');
Autunno : write('autunno');
Inverno : write('inverno');
end
end;
function Prezzo (s: TipoStagione): integer;
begin
case s of
Primavera, Autunno : Prezzo := 150;
Estate : Prezzo := 200;
Inverno : Prezzo := 100;
end
end;
begin
write('Data (giorno, mese) ? ');
readln(giorno, mese);
stagione := InStagione(giorno, mese);
write('E'' in ');
StampaStagione(stagione);
writeln;
writeln('Prezzo camera: ', Prezzo(stagione))
end.