3 réponses
Bonjour on m'a aidé à amélioré le programme et il me manque que le cas ou avec les dés on est supérieur à 64
et si le dé tombe sur 31 et le programme s'arrête quelqu'un ???
et si le dé tombe sur 31 et le programme s'arrête quelqu'un ???
#include <stdio.h> #include <stdlib.h> int main() { int a = 1,b = 1,c = 0; while(a>0 && b>0 && a<=6 && b<=6 && c<64 && c!=31) { printf("Vous etes a la position %d\n",c); printf("Donnez la valeur des des :\n"); scanf("%d",&a); scanf("%d",&b); if(!(a > 0 && a < 7) || !(b > 0 && b < 7)) { a = 1; b = 1; continue; } if((a==6 && b==3 && c==0) || (a == 3 && b==6 && !c)) { c = 26; } else if(a == b) { c = c+(2*(a+b)); } else if(c == 6) { c = 12; } else if(c == 42) { c = 30; } else if(c == 58) { c = 0; } else { c = c+(a+b); } } printf("VOUS AVEZ GAGNE."); system("pause"); return 0; }
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 oct. 2010 à 19:26
4 oct. 2010 à 19:26
Quand tu dépasses 64, tu dois rebrousser chemin.
Formellement tu retires de 64 ce qui dépasse : c=64-(c-64) ou c=128-c
Pour ta case 31, un break, ou un exit devrait faire l'affaire.
Formellement tu retires de 64 ce qui dépasse : c=64-(c-64) ou c=128-c
Pour ta case 31, un break, ou un exit devrait faire l'affaire.
Slt à toi pour ce qui est du c=64-...je le place où hors du WHILE ou à l'interieur ?
Et pour la case 31 il doit y avoir un autre moyen car break et exit
je ne les ai pas encore vu en cours donc
Et pour la case 31 il doit y avoir un autre moyen car break et exit
je ne les ai pas encore vu en cours donc
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 oct. 2010 à 19:35
4 oct. 2010 à 19:35
Pour le c=64, tu le places dans tes if associés à c : if (c>64) c=128-c;
break, te permet de sortir de la boucle prématurément, exit sort du programme
ici ça ferait : if (c==31) { printf("PERDU"); exit; }
Ou alors : if (c==31) break;
Mais dans ce dernier cas il faudrait différencier à la fin du while, le cas où tu es sortie de la boucle en gagnant, ou en perdant pour afficher le bon message...
break, te permet de sortir de la boucle prématurément, exit sort du programme
ici ça ferait : if (c==31) { printf("PERDU"); exit; }
Ou alors : if (c==31) break;
Mais dans ce dernier cas il faudrait différencier à la fin du while, le cas où tu es sortie de la boucle en gagnant, ou en perdant pour afficher le bon message...
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 oct. 2010 à 19:44
4 oct. 2010 à 19:44
Remarque : ton "c!=31" dans la condition du while revient au même que faire le break.
Le problème est juste qu'en sortant de la boucle, dans ce cas là tu perds alors que tu affiches que tu gagnes !
Le problème est juste qu'en sortant de la boucle, dans ce cas là tu perds alors que tu affiches que tu gagnes !
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
4 oct. 2010 à 19:53
4 oct. 2010 à 19:53
Déjà je pense que tu as mis trop de conditions !
a>0 && b>0 && a<=6 && b<=6 // Ceux là ne servent à rien...
Si l'utilisateur du programme ne sait pas s'en servir, tant pis pour lui ^^
En tout cas, on ne devrait pas perdre la partie à cause de ça !
Du coup il reste "c<64 && c!=31", mais si tu mets "c!=64 && c!=31" dans ce cas tu ne sors plus de la boucle quand c>64 et tu peux mettre en place ta condition if (c>64)
Ensuite quand tu es sortie tu n'as plus que deux cas :
if (c==31) printf('PERDU") else printf("GAGNE");
a>0 && b>0 && a<=6 && b<=6 // Ceux là ne servent à rien...
Si l'utilisateur du programme ne sait pas s'en servir, tant pis pour lui ^^
En tout cas, on ne devrait pas perdre la partie à cause de ça !
Du coup il reste "c<64 && c!=31", mais si tu mets "c!=64 && c!=31" dans ce cas tu ne sors plus de la boucle quand c>64 et tu peux mettre en place ta condition if (c>64)
Ensuite quand tu es sortie tu n'as plus que deux cas :
if (c==31) printf('PERDU") else printf("GAGNE");