Un autre programme qui ne fonctionne pas !

Flowneo Messages postés 88 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 30 août 2012 - 26 nov. 2009 à 19:57
cs_Chouchou182 Messages postés 252 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 25 avril 2011 - 26 nov. 2009 à 21:56
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

cs_Chouchou182 Messages postés 252 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 25 avril 2011 1
26 nov. 2009 à 21:56
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,
0
Rejoignez-nous