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

  1. Armulis Messages postés 1653 Statut Membre 413
     
    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
  2. 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
  3. Armulis Messages postés 1653 Statut Membre 413
     
    Mais arrête d'envoyer du code sans arrêt, parle en français! =D
    0
    1. 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
    2. Armulis Messages postés 1653 Statut Membre 413
       
      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
    3. nour hamaid Messages postés 15 Statut Membre
       
      je n'ai pas compris sa signification ,bon le type de cet erreur
      0
    4. Armulis Messages postés 1653 Statut Membre 413
       
      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
    5. nour hamaid Messages postés 15 Statut Membre
       
      merci :)
      0
  4. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    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
    1. nour hamaid Messages postés 15 Statut Membre
       
      c vrai dal ce type d'erreur causé par la mise des accens
      0