Tour de hanoi
nour hamaid
Messages postés
15
Statut
Membre
-
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;
}
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;
}
A voir également:
- Tour de hanoi
- Comment réinitialiser une tour d'ordinateur - Guide
- Carte tour de france 2025 - Guide
- Ma tour s'allume mais l'écran reste noir - Guide
- Brancher tour pc sur tv - Guide
- Pas d'image sur PC en HDMI vers écran TV (tour fixe) - Forum Matériel & Système
4 réponses
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è?
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è?
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
#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
Mais arrête d'envoyer du code sans arrêt, parle en français! =D
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
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