Tour de hanoi

nour hamaid Messages postés 15 Statut Membre -  
nour hamaid Messages postés 15 Statut Membre -
bj :) j'ai une problème au niveau de ce code du jeu de tour de Hanoi et je serai content de vous aide et merci d'avanc
c mon code
#include <iostream>
#include "Anneau.h"
#include "Tour.h"
#include "JeuHanoi.h"
using namespace std;
Anneau::Anneau( int d )
{
diamètre=d;
}
int Anneau::getdiamètre()
{
return (diamétre);
}

Anneau::~Anneau ()
{

}

Tour::Tour (int N, char c )
{
nb_dismax=N;
alias='c';
pile=new Anneau [nb_dismax=N];
}
void Tour::ajouter(Anneau Disq)

{
if (! est_pleine())
pile [nb_dis];
nb_dis++;
else
cout << "tour est pleine ";


}
void Tour::enlever()
{
if ( !est_vide())
nb_dis--;
else
cout<<" tour est vide";
}
bool Tour::est_pleine()
{
return (nb_dis==nb_dismax);
}
bool Tour::est_vide()
{
return (nb_dis==0);
}
Disque Tour::sommet()
{
if (est_vide())
return (-1);
else
return (pile[nb_dis-1]);
}
Tour::~Tour()
{
delete[] pile;
}

JeuHanoi::JeuHanoi(int k)
{
nb_disques=k;
TourA(k,A);
TourB(k,B);
TourC(k,c);

}
JeuHanoi::~JeuHanoi()
{

}
JeuHanoi::déplacer(char de, char vers) {
int DA = 0;
int DB = 0;
int DC = 0;
nb_deplacements =0.



if (!TourA.est_pleine())
DA = TourA.sommet().getdiamètre();
if (!TourB.est_pleine())
DB = TourB.sommet().getdiamètre();
if (!TourC.est_pleine())
DC = TourC.sommet().getdiamètre();

if (de == 'A') {
if (vers == 'B') {
if (DA > DB && DB != 0) {
cout<<"Deplacement Illegal";
return false;
}
else {
TourB.ajouter(TourA.sommet());

cout<<"L'anneau de diamètre DA est déplacé de la tour A vers la tour B";
nb_deplacements++;
return true;
}
}
else {
if (DA > DC && DC != 0) {
cout<<"Deplacement Illegal";
return false;
}
else {
TourC.ajouter(tourA.sommet());

cout<<"L'anneau de diamètre DA est déplacé de la tour A vers la tour C";
nb_deplacements++;
return true;
}

}
}
else {
if (de == 'B') {
if (vers == 'A') {
if (DB > DA && DA != 0) {
cout<<"Deplacement Illegal";
return false;
}
else {
TourA.ajouter(TourB.sommet());

cout<<"L'anneau de diamètre DB est déplacé de la tour B vers la tour A";
nb_deplacements++;
return true;
}
}
else {

if (DB > DC && DC != 0) {
cout<<"Deplacement Illegal";
return false;
}
else {
TourC.ajouter(TourB.sommet());

cout<<"L'anneau de diamètre DB est déplacé de la tour B vers la tour C";
nb_deplacements++;
return true;
}
}
}
else {
if (vers == 'A') {
if (DC > DA && DA != 0) {
cout<<"Deplacement Illegal";
return false;
}
else {
TourA.ajouter(TourC.sommet());

cout<<"L'anneau de diamètre DC est déplacé de la tour C vers la tour A";
nb_deplacements++;
return true;
}
}
else {
if (DC > DB && DB != 0) {
cout<<"Deplacement Illegal";
return false;
}
else {
TourB.ajouter(TourC.sommet());

cout"L'anneau de diamètre DC est déplacé de la tour C vers la tour B";
nb_deplacements++;
return true;
}
}
}
}
}

bool JeuHanoi::fin()
{
return(TourA.nb_dis==0);

}

int main()
{
cout << "Hello world!" << endl;
JeuHanoi J(3);
while(!J.fin())
{
char de,vers;
do
{
cout<<"de:";
cin>>((de=='A')||(de=='B')||(de=='C'))
do
{
cout<<"vers:";
cin>>vers;

}while ((vers=='A')||(vers=='B')||(vers=='C'))
J.déplacer(de,vers);

}
}

return 0;
}

4 réponses

Armulis Messages postés 1653 Statut Membre 411
 
C'est super génial, mais si tu pouvais commencer par nous dire ce qu'on doit chercher, on aurait moins de peine à t'aider.
Et explique éventuellement (si t'as l'impression que c'est utile) un peu mieux la situation =D
C'est bien du C++ ton langagè?
0
nour hamaid Messages postés 15 Statut Membre
 
et c la declarations des methodes:
#ifndef ANNEAU_H_INCLUDED
#define ANNEAU_H_INCLUDED
class Anneau
{
private
int diamètre;
public
Anneau(int);
int getdiamètre;
~Anneau();
};



#endif // ANNEAU_H_INCLUDED





#ifndef TOUR_H_INCLUDED
#define TOUR_H_INCLUDED
class Tour
{
private
int nb_dismax ;
int nb_dis ;
Disque*pile ;
char alias ;
public
//Constructeur
Tour (int,char);

//methodes
bool est_vide ();
bool est_pleine();
void ajouter (Disque);
void enlever();
Anneau sommet();
~Tour();

};



#endif // TOUR_H_INCLUDED










#ifndef JEUHANOI_H_INCLUDED
#define JEUHANOI_H_INCLUDED
class JeuHanoi
{

private
int nb_disques,DA,DB,DC,nb_deplacements;
Tour TourA,TourB,TourC;
public
//constructeur
JeuHanoi(int);
~JeuHanoi();
bool fin();
bool déplacer (char,char);
};


#endif // JEUHANOI_H_INCLUDED
0
Armulis Messages postés 1653 Statut Membre 411
 
Mais arrête d'envoyer du code sans arrêt, parle en français! =D
0
nour hamaid Messages postés 15 Statut Membre
 
bj :)
lorsque je fait la compilation ils apparaissent des messages d'erreur comme suit "error stray '\350' in program :D
0
Armulis Messages postés 1653 Statut Membre 411
 
OK. Dans ce cas, tu dois te renseigner sur ces messages d'erreur, pour savoir ce qu'ils veulent dire, et chercher la solution adaptée.
0
nour hamaid Messages postés 15 Statut Membre
 
je n'ai pas compris sa signification ,bon le type de cet erreur
0
Armulis Messages postés 1653 Statut Membre 411
 
En fait, le compilateur t'a écrit que l'erreur était à la ligne (stray) 350 de ton programme.
Je sais pas où ça se situe, puisqu'ici, les lignes ne sont pas numérotées =D
(Si-jamais tu comprends pas, traduits ce que tu peux en anglais avec google traductions, ça peut aider)
0
nour hamaid Messages postés 15 Statut Membre
 
merci :)
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Non, "\350" n'est pas le numéro de ligne. Le numéro de ligne doit se trouver ailleurs dans le message.

Le compilateur se plaint que le code source contient des caractères qu'il n'arrive pas à lire, ou qui ne correspondent pas au format d'encodage attendu.

Tu mets des accents à tes noms de variables (par exemple : "int getdiamètre;").

Cette erreur vient très certainement de là.


Dal
0
nour hamaid Messages postés 15 Statut Membre
 
c vrai dal ce type d'erreur causé par la mise des accens
0