1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#include <conio.h>
#include <iostream>
#include <windows.h>
using namespace std;
int NbAnneau=3;
int Tab[3][3]={{1,0,0}, {2,0,0}, {3,0,0}};
//int Taille=3;
int C1, C2, C3;
char Vide = '.';
//PROTOTYPES
void Hanoi (int Tab[3][3], int NbAnneau, int C1, int C2, int C3);
void Deplacer (int C1, int C3);
void Afficher (void);
void main()
{
cout << "Entrez le nombre de disque sur la premiere colonne: ";
//cin >> NbAnneau; JE MODIFIERAI CECI PLUS TARD UNE FOIS QUE LE TEST STATIQUE EST RÉUSSI
Hanoi(Tab, NbAnneau, C1, C2, C3);
_getch();
}
void Deplacer(int C1, int C3)
{
int i = 0, Temp;
while (Tab[i][C1] == 0)
i++;
Temp = Tab[i][C1];
Tab[i][C1] = 0;
i = NbAnneau-1;
while (Tab[i][C3] !=0)
i--;
Tab[i][C3] = Temp;
Afficher();
}
void Hanoi(int Tab[3][3], int NbAnneau, int C1, int C2, int C3)
{
if (NbAnneau == 0)
;
else
{
Hanoi(Tab, NbAnneau-1, C1, C3, C2);
Deplacer (C1, C3);
Hanoi(Tab, NbAnneau-1, C2, C1, C3);
}
}
void Afficher (void)
{
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
if (Tab[i][j] != 0)
cout << Tab[i][j] << "\t";
else cout << Vide << "\t";
}
cout << "\n";
}
cout << "__________________" << "\n";
cout << "C1\t" << "C2\t" << "C3" << "\n\n";
_getche();
} |
Partager