Un autre programme qui ne fonctionne pas !

Signaler
Messages postés
88
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
30 août 2012
-
Messages postés
252
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
25 avril 2011
-
bonjour, pouvez vous me dire pourquoi cela ne fonctionne pas ?

#include <string>
#include

using namespace std;

string joueur();
string essaiJoueur();
bool testerCombinaison(string);

int main (){
string mot;
string solutionJoueur1[3];
string solutionJoueur2[3];
string essai[3];
bool gagne=false;
string combinaisonJoueur1;
string combinaisonJoueur2;
string combiJoueur1;

cout<<"Joueur 1"<<endl;
do {
combinaisonJoueur1=joueur(); //combinaison du joueur1
} while (testerCombinaison(combiJoueur1));
solutionJoueur1[3]= combinaisonJoueur1;//met la combinaison dans un tableau
system ("cls");
cout<<"Joueur 2"<<endl;
do {
combinaisonJoueur2=joueur(); //combinaison du joueur1
} while (testerCombinaison(combiJoueur1));
solutionJoueur2[3]= combinaisonJoueur2;//met la combinaison dans un tableau
cout<<"solution du joueur 1 "<<solutionJoueur1[3]<<endl;
cout<<"solution du joueur 2 "<<solutionJoueur2[3]<<endl;

system ("pause");
return 0;
}
string joueur(){
string combi;
cout<<"Veuillez choisir 4 couleurs parmis les suivantes"<<endl;
cout<<"(r=rouge,v=vert,b=bleu,j=jaune,n=noir,o=orange):"<<endl;
cin>>combi;
return (combi); //retourne la combinaison d'un joueur
}
string essaiJoueur(){
string essai;
cout<<"a vous de jouer ! saisissez a nouveau une combinaison pour trouver si celle-ci est celle de votre adversaire"<<endl;
cin>>essai;
return(essai); //retourne une combinaison pour la comparer
}

bool testerCombinaison(string combi){ // procédure de test de la validité de la combinaison

int longueurCombiJoueur=combi.length(); //donne la longueur de la combinaison
int i;
for (i=0; i<longueurCombiJoueur; i++){ //boucle pour extraire chaque caractère 1 à 1
string extrait= combi.substr(i,1);
if (extrait != "r" & extrait != "v" & extrait != "b"& extrait != "j" & extrait != "n"& extrait != "o"){ //compare chaque caractère pour vérifier la saisie
cout<<"erreur de saisie"<<endl;
return true; //retourn true si erreur
}
}return false; //retourn false si pas d'erreur
}

1 réponse

Messages postés
252
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
25 avril 2011

Bonjour.

Il y a un problème avec les tableaux.
La déclaration:
string sJ1[3];
réserve un tableau à trois cases auxquelles on accède par
sJ1[0];
sJ1[1];
sJ1[2];
Essayer d'accéder à sJ1[3], c'est traverser en-dehors des clous: ça peut être dangereux.


Pourquoi utilises-tu un tableau?
Confonds-tu un objet string avec un tableau de char? Ça a la même fonction, mais des syntaxes différentes!

Bonne prog,