{ File: datasuN1.pas }

program DataSuccessiva;
{ Legge giorno, mese ed anno di una data, un intero n, e determina la data
  di n giorni dopo.
  La data finale deve essere del XX secolo.
}

var
  g, m, a     : integer;   { rappresentano la data }
  quanti_dopo : integer;   { numero di giorni di cui avanzare }
  i           : integer;   { indice per il ciclo }


  procedure AvanzaUnGiorno (var giorno, mese, anno: integer);

    function GiorniDelMese (mm, aa: integer): integer;
    { Calcola il numero dei giorni del mese. }
    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 { case }
    end; { GiorniDelMese }

  begin { AvanzaUnGiorno }
    if giorno = GiorniDelMese(mese,anno) then
    begin
      giorno := 1;
      if mese = 12 then
      begin
        mese := 1;
        anno := anno + 1
      end
      else
        mese := mese + 1
    end
    else
      giorno := giorno + 1;
  end; { AvanzaUnGiorno }


begin { DataSuccessiva }
  { lettura della data }
  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'' ');

  for i:= 1 to quanti_dopo do
    AvanzaUnGiorno(g, m, a);

  { stampa la data aggiornata }
  writeln(g:2, '/', m:2, '/', a:4)
end. { DataSuccessiva }