with text_io; use text_io; procedure MilyenNap is type HONAP is (januar, februar, marcius, aprilis, majus, junius, julius, augusztus, szeptember, oktober, november, december); type NAP is (hetfo, kedd, szerda, csutortok, pentek, szombat, vasarnap); subtype HETKOZNAP is NAP range hetfo..pentek; type Datum is record nap: INTEGER range 1..31; ho : HONAP; end record; napszam: constant array (HONAP) of POSITIVE := (31,28,31,30,31,30,31,31,30,31,30,31); dat: DATUM; szokoev: BOOLEAN; kezdonap: NAP; str: STRING(1..80); hossz: NATURAL; ch: CHARACTER; function Hanyadik ( d: DATUM; szokoev: BOOLEAN := false ) return POSITIVE is n: NATURAL := 0; h: HONAP := HONAP'FIRST; begin while h < d.ho loop n := n+napszam(h); h := HONAP'SUCC(h); end loop; if szokoev and d.ho > februar then n := n+1; end if; return n + d.nap; end Hanyadik; function MilyenNap ( hanyadik: POSITIVE; kezdonap: NAP ) return NAP is begin return NAP'VAL( (hanyadik-1) mod (NAP'POS(NAP'LAST)+1) + NAP'POS(kezdonap) ); end MilyenNap; begin Put("Szokoev van? [y/n] "); Get(ch); Skip_Line; szokoev := ch='y'; Put("Honap: [januar..december] "); Get_Line(str,hossz); dat.ho := HONAP'VALUE(str(1..hossz)); Put("Hanyadika: [1..31] "); Get_Line(str,hossz); dat.nap := INTEGER'VALUE(str(1..hossz)); Put("Mi volt az ev elso napja? [hetfo..vasarnap] "); Get_Line(str,hossz); kezdonap := NAP'VALUE(str(1..hossz)); Put_Line("Eredmeny: " & NAP'IMAGE(MilyenNap(Hanyadik(dat,szokoev),kezdonap))); end MilyenNap;