Вы находитесь на странице: 1из 6

Linguagem de Programao

Torre de Hanoi
A Torre de Hanoi um Jogo, onde voc tem N torres e N Peas . O
jogo consiste em retirar todas as peas de uma torre e passar para uma outra
torre, sem que uma pea de maior tamano !ique em cima de uma de menor
tamano.
"#.$
%uatro &'( peas e trs torres.
A ) *
+este caso deve,se retirar todas as peas da torre A e co-ocar na torre
*. O programa deve contar o numero de movimentos necess.rios para isso, e
mostrar o tota- de movimentos.
O n/mero de movimentos do0ra cada ve1 que se acrescenta uma nova
pea, o0edecendo a !ormu-a$ 2
n
- 1
Faa um teste$
Pegue um pedao de pape- e corte ' pedaos de tamanos di!erentes e
os numere de 2 a ', imagine trs torres &A,),*(, co-oque todas as peas na
torre A e !aa todos os movimentos necess.rios &e os conte( para retirar todas
as peas da torre A para a torre *. Aumente uma pea &3 cinco( e !aa o
mesmo teste e assim sucessivamente.
Histria:
4oi proposto a um grupo de monges !a1er este jogo com trs torres e
5' peas.
6
5'
, 2 7 2,8''59' # 2:
2;
, 2 7 28.''5.9':.:::.:::.:::.:::, de
movimentos
O tempo estimado <
"m um computador que rea-i1e um movimento por cic-o &mi-=es de
instru=es( ter>amos.
Pag.: 1
Linguagem de Programao
2,8''59' # 2:
2;
movimentos, se cada cic-o !osse de 2 segundo
ter>amos$
2,8''59' # 2:
2;
?egundos
@,:9''39 # 2:
29
Ainutos
3,26':;3 # 2:
23
Horas
6,2@3:@; # 2:
2'
Bias
3,8';'6' # 2:
22
Anos 7 38'.;'6.':::.:::,
Peas Movimentos Tempo Estimado em
Segundos
@ 9 9
' 23 23
3 @2 @2
5 5@ 5@
9 269 269
8 633 633
; 322 322
2: 2:6@
22 6:'9
26 ':;3
2@ 82;2
2'
Pag.: 2
Linguagem de Programao
Fluxograma do Programa Torre de Hanoi
Cnicio
2
a7DAD
07D)D
c7D*D
6
+
'
+umero de
aneis
3
Hanoi&n,a,
0,c(
5
DAovimentosD,
cont
9
4im
8
Pag.: 3
Linguagem de Programao
Hanoi&n,orige,i
nter,desti(
;
Eeturn
22
*ont 7 *ont F
2
26
Hanoi&n,2,
orige,inter,
desti(
2@
DAova deDorige
DparaDdesti
2'
Hanoi&n,2,i
nter,orige,
desti(
23
n G :
25
+
Programa da Torre de Hanoi em C
#include "conio.h"
#include "stdio.h"
#include "dos.h"
#include "stdlib.h"
double cont=0;
main()
{
void hanoi(intcha!cha!cha!);
int nt;
cha! a="#"b="$"c="%";
cl!sc!();
&!int'("ent!e com o nume!o de aneis: ");
Pag.: (
Linguagem de Programao
scan'(")d"*n);
cl!sc!();
t=time(0);
hanoi(nabc);
&!int'("+n)2.0' movimentos em )d segundos"conttime(0),t);
getch();
-
void hanoi(int ncha! o!igecha! inte!cha! desti)
{
i' (n.0)
{
cont//;
hanoi(n,1o!igedestiinte!);
&!int'("mova de )c &a!a )c+n"o!igedesti);
hanoi(n,1inte!o!igedesti);
-
-

Programa da Torre de Hanoi em Basic ou Qbasic
012
012 P!og!ama da calculo da to!!e de 3anoi
012 141 , %achoei!a Paulista , 1556
012
71%8#01 9:$ hanoi (n o!ige; inte!; desti; cont)
%89
cont = 0
n = 0
a; = "#"
b; = "$"
c; = "%"
P0<=4 "1nt!e com o nume!o de aneis: "
<=P:4 n
t; = 4<21;
%#88 hanoi(n a; b; c; cont)
P0<=4
P0<=4 cont " 2ovimentos em " t; 4<21; "segundos"
1=7
9:$ hanoi (n o!ige; inte!; desti; cont)
<> (n . 0) 431=
cont = cont / 1
%#88 hanoi(n , 1 o!ige; desti; inte!; cont)
P0<=4 "2ova de " o!ige; "&a!a" desti;
%#88 hanoi(n , 1 inte!; o!ige; desti; cont)
1=7 <>
1=7 9:$
Pag.: ?
Linguagem de Programao
Programa da Torre de Hanoi em Pascal
&!og!am hanoit;
va!
cont n t : intege!;
a b c : cha!;
'unction hanoi(va! n:intege!;o!ige:cha!):
va!
n1 : intege!;
o!ige inte! desti : cha! ;
begin
i' (n.0) then
begin
cont:=cont / 1;
hanoi(n,1o!igedestiinte!);
&!int'("mova de )c &a!a )c+n"o!igedesti);
hanoi(n,1inte!o!igedesti);
end;
end;
begin
a:="#";
b:="$";
c:="%";
@!ite("ent!e com o nume!o de aneis: ");
!eadln(n);
t:=time(0);
hanoi(nabc);
@!iteln(cont "movimentos em "time(0) , t"segundos");
!eadln(a);
end.
A
Pag.: 6

Вам также может понравиться