{ Programa sobre as "Torres de Hanoi" Adriano Marto Reis 12/12/1999 } uses Dos, Crt; var Movimentos, NumDiscos :Integer; {***************************************************************************} procedure MoverDiscos (Horigem, Destino, Intermed: String; Quantidade: Integer); begin if Quantidade = 0 then exit; MoverDiscos (Horigem, Intermed, Destino, Quantidade -1); Movimentos := Movimentos + 1; WriteLn (Movimentos, ': Mover disco da ', Horigem, ' para ', Destino); MoverDiscos (Intermed, Destino, Horigem, Quantidade -1); end; {***************************************************************************} begin ClrScr; Write ('Digite o n£mero de Discos: '); ReadLn (NumDiscos); Movimentos := 0; MoverDiscos ('Agulha A', 'Agulha B', 'Agulha C', NumDiscos); Write ('Foram necess rios ', Movimentos, ' movimentos para mover ', NumDiscos, ' discos.'); KeyPressed; end.