Bon, partie 2 :
for (i=0; i<NOMBRE_CASE ; i++) {
if (t2[i] == t1[i]) {
z = 1;
}
else {
printf("Le nombre de pion bien placé est %d, celui de pion mal placé est %d.\n", r, b);
}
}
Imagine, le premier est bon, le second non.
Tu mets
z à 1 au premier tour, au second tu ne le changes pas.
En sortie de boucle
z vaut 1, donc tu affiches victoire : remet
z à zéro dans le
else.
Après cette modif’, tu as le problème inverse : si le premier est mauvais mais le second bon. Tu vas mettre z à 1 et sortir.
Je te conseille de faire un
z++ si les lettres sont égales, et dans ton
while tu sors si
z vaut
NOMBRE_CASE.
Deuxième problème, qui va te foutre dans une boucle infinie (si tu ne vois pas pourquoi, teste) : tu ne remets pas
t2 à zéro.
Un coup de
memset et on n’en parle plus.
Voilà le code mis à jour :
for(i = 0; i < NB_CELL; i++)
{
if (t2[i] == t1[i])
z++;
else {
printf("Le nombre de pion bien placé est %d, celui de pion mal placé est %d.\n", r, b);
z = 0;
}
}
memset(t2, 0, sizeof t2);
Sinon, évite les caractères non-ASCII dans les chaînes littérales de type
char, la sortie va dépendre de l’encodage du terminal, c’est moche.
En fait, évite le français tout court (surtout pour le code lui-même).
Et évite les noms de variables d’une seule lettre comme
r et
b (red et black c’est beaucoup plus parlant…), sauf pour les compteurs et 2 -3 exceptions.