Résolu Marre des boucles qui n'écoutent pas ce que je leur dis !!!

Solutions (3)
Tags :
  • string
  • Programmation
|
Bonjour :) 
Je refais le TP du pendu pour le fun ( je ne trouve plus mon premier code :D  ) . Et puis bah j'ai presque fini, à l'exception du fait que je n'arrive pas à faire stopper la boucle. Pourtant, je vois pas où est le problème à ça : PENDANT QUE strcmp(chaine1, chaine2) != O OU nombreDeCoup != 0, FAIRE...
Bref, je vous poste le code ci-dessous, merci d'avance ^^

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <string.h>
  5.  
  6.  
  7. void purger(void);
  8. int compareCaractere(char* chaine1, char caractere);
  9.  
  10. int main(int argc, char* argv[])
  11. {
  12. char motSecret[] = "MARRON", caractere = 0;
  13. char motTrouve[] = "******";
  14. int nombreDeCoup = 10;
  15. int i = 0;
  16. printf("====BIENVENUE DANS LE PENDU=====\n\n\n");
  17.  
  18. while(strcmp(motSecret, motTrouve) || nombreDeCoup != 0)
  19. {
  20. printf("Il vous reste %d coups.\n", nombreDeCoup);
  21. printf("Quel est le mot secret ?\n\n");
  22. printf("%s\n", motTrouve);
  23. caractere = getchar();
  24. caractere = toupper(caractere);
  25. purger();
  26.  
  27. for(i = 0 ; i < strlen(motSecret) ; i++)
  28. {
  29. if(caractere == motSecret[i])
  30. motTrouve[i] = caractere;
  31.  
  32. }
  33.  
  34. if(!compareCaractere(motSecret, caractere))
  35. nombreDeCoup--;
  36.  
  37. printf("\n\nStrcomp : %d \n\n", strcmp(motSecret, motTrouve));
  38.  
  39.  
  40.  
  41. }
  42.  
  43. return 0;
  44. }
  45.  
  46. void purger(void)
  47. {
  48. int c;
  49.  
  50. while ((c = getchar()) != '\n' && c != EOF)
  51. {}
  52. }
  53.  
  54.  
  55. int compareCaractere(char* chaine1, char caractere)
  56. {
  57. int i, compteur = 0;
  58. for (i = 0; i < strlen(chaine1) ; i++)
  59. {
  60. if(chaine1[i] == caractere)
  61. compteur++;
  62. }
  63.  
  64. if(compteur != 0)
  65. return 1;
  66.  
  67. return 0;
  68. }
Contenus similaires
  • Autres pages sur : marre boucles ecoutent dis
Meilleure solution
partage
|
Bonjour,

et voici tout simplement :
  1. while((strcmp(motSecret, motTrouve))!=0 && (nombreDeCoup != 0))


Ton string compare te renvoi 1. Donc même si ton nombre de coup est 0, 0 OU 1 ça fait 1, donc c'est VRAI, donc sa continue a boucler.
  • Commenter cette solution |
Score
0
òh
òi
|
Merci de ta réponse, effectivement ça marche déjà mieux avec && :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par Alcooline.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS