program DataSuccessiva;
var
g, m, a : integer;
quanti_dopo : integer;
i : integer;
procedure AvanzaGiorni (var giorno, mese, anno : integer;
num_giorni : integer );
var
giorni_del_mese : integer;
function GiorniDelMese (mm, aa : integer): integer;
begin
case mm of
1,3,5,7,8,10,12 : GiorniDelMese := 31;
4,6,9,11 : GiorniDelMese := 30;
2 : if (aa mod 4 = 0) and (aa <> 1900) then
GiorniDelMese := 29
else
GiorniDelMese := 28
end
end;
begin
repeat
giorni_del_mese := GiorniDelMese(mese,anno);
if giorno + num_giorni <= giorni_del_mese then
begin
giorno := giorno + num_giorni;
num_giorni := 0
end
else
begin
num_giorni := num_giorni - (giorni_del_mese - giorno + 1);
giorno := 1;
if mese = 12 then
begin
mese := 1;
anno := anno + 1
end
else
mese := mese + 1
end
until num_giorni = 0
end;
begin
write('Data (giorno, mese, anno) ? ');
readln(g, m, a);
writeln;
write('Quanti giorni dopo ? ');
readln(quanti_dopo);
write(quanti_dopo, ' giorni successivi al',
g:3, '/', m:2, '/', a:4, ' e'' ');
AvanzaGiorni(g, m, a, quanti_dopo);
writeln(g:2, '/', m:2, '/', a:4)
end.