Probleme avec les chaines de caractere

Fermé
drizzt - 11 nov. 2004 à 22:16
 Drizzt - 12 nov. 2004 à 19:09
Bonjour,

j'ai un projet a faire (c mon 2e projet de l'année alors soyez indulgents ^^), il s'agit d'un pendu !

j'ai deja taper le programme, mais malheureusement il ne fonctionne pas comme il devrait et je n'arrive pas à comprendre où je me serais trompé !

(j'ai 3 chaines de caractere : mot qui est le mot rentré par l'utilisateur, puis motDev qui permet d'afficher ce qui reste à deviner du mot pour le joueur et enfin compareMot qui permet de calculer les pénalités)

voila mon algo (ou du moins la partie qui ne fonctionne pas correctement) :

dans le main :

cout<<joueur1<<", a vous d'entrer un mot :";
cin>>mot;
taille=mot.length();

for(i=0;i<=taille-1;i++){
motDev[i]='_';
}

compareMot=motDev;
penalite=0;

jeu(mot, motDev, compareMot, taille, joueur2, penalite);

puis les fonctions :

void jeu(string mot, string &motDev, string &compareMot, int taille, string joueur2, int penalite)
{
char carDev;

while(motDev!=mot && penalite!=11){
system("clear")
cout<<"Penalite :"<<penalite;
cout<<motDev;
cout<<joueur2<<", a vous d'entrer une lettre :";
cin>>carDev;

calcMotDev(carDev, mot, motDev, taille);

if(motDev==compareMot){
penalite=penalite+1;
}
}
compareMot=motDev;
}


void calcMotDev(char carDev, string mot, string &motDev, int taille)
{
int i;

for(i=0;i<=taille-1;i++){

if(carDev==mot[i]){
motDev[i]=carDev;
}
}
}


mon probleme ici est que le mot à deviner (donc motDev) ne s'affiche pas et qu'apparement, le programme ne compare pas par rapport à ce qu'il y avait précedemment (normalement avec compareMot) puisque, quoiqu'on entre comme lettre, la pénalité est à chaque fois incrémentée de 1 !!

si qqn peut me dire ou est mon erreur, cela me serait vraiment d'une grande aide :D
A voir également:

4 réponses

MoiCJarod Messages postés 161 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 22 décembre 2009 111
11 nov. 2004 à 23:21
Bonjour

Comment sont déclarés mot, motdev et comparemot ?

Jean-Rodolphe Letertre
0
salut jarod,

en fait pour déclarer ces trois chaines j'ai betement mis :

string mot;
string motDev;
string compareMot;

merci de m'aider c vraiment sympa :)
0
MoiCJarod Messages postés 161 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 22 décembre 2009 111
12 nov. 2004 à 18:10
Bonjour

Bon alors ... après un petit débuggage sur mon PC ça donne ça :

pour le fait que motDev ne s'affiche pas, c'est parce qu'il n'est pas initialisé correctement, il faudrait ceci pour qu'il soit bien initialisé :

motDev = (25, '_');
motDev = motDev.substr(0,taille);

à la place de :

for(i=0;i<=taille-1;i++)
{
motDev[i]='_';
}

pour le reste (la pénalité) :

ben en fait, le fait de régler le probleme de l'initialisation regle aussi le probleme de la pénalité :-)


Jean-Rodolphe Letertre
0
En effet, je viens d'essayer et c'était bien ça qui empechait le programme de fonctionner correctement.

Merci beaucoup jarod ^^
0