{ File: invertin.pas }

{ Scopo: esempio di procedura ricorsiva }

program InvertiNumero;
{ Inverte le cifre di un numero intero usando una procedura ricorsiva ed una
  iterativa.
}

var
  numero : integer;


  procedure InvertiRicorsiva (n : integer);
  { Inverte le cifre di un numero intero.  Versione ricorsiva. }
  begin
    write(n mod 10 : 1);
    if n div 10 <> 0 then
      InvertiRicorsiva(n div 10)
  end; { InvertiRic }


  procedure InvertiIterativa (n: integer);
  { Inverte le cifre di un numero intero.  Versione iterativa. }
  begin
    repeat
      write(n mod 10 : 1);
      n := n div 10
    until n = 0
  end; { InvertiIterativa }


begin { InvertiNumero }
  write('Scrivi un numero intero non negativo');
  readln(numero);
  write('Numero invertito con procedura ricorsiva: ');
  InvertiRicorsiva(numero);
  writeln;
  write('Numero invertito con procedura iterativa: ');
  InvertiIterativa(numero);
  writeln
end. { InvertiNumero }