Se connecter / S'enregistrer
Votre question

Langage C , problème pour terminer mon petit programme...

Tags :
  • Time
  • Programmation
Dernière réponse : dans Programmation
11 Septembre 2008 21:53:39

Bonjour,
voilà j'apprends le C sur le site du zéro et dans la première partie il y a un tp à réalisé, l'IDE que j'utilise est Code::Block.

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5.  
  6. long genereNombre(long MIN,long MAX)
  7.  
  8. {
  9. srand(time(NULL));
  10. return (rand() % (MAX - MIN + 1)) + MIN;
  11. }
  12.  
  13. void demande_nombreMystere(long* nombre1,long* nombre3,long N,long M)
  14.  
  15. {
  16. printf("Quel est le nombre mystere?:"); //nombreEntre= Celui que le joueur donne.
  17. scanf("%ld",nombre1);
  18. /*A chaque fois que programme lit la valeur que l'on rentre le nombre de coups
  19. augmente de 1*/
  20. //NDC++;
  21.  
  22. while (*nombre1>M)
  23. /*Tant que l'on rentre une valeur supérieur à la valeur Maximum, on nous redemande
  24. une valeur correcte et on nous compte quand même un point ^^*/
  25. {
  26. *nombre3++;
  27. printf("Attention vous avez choisi le niveau %ld donc le nombreMystere est compris entre 1 et %ld:",N,M);
  28. scanf("%ld",nombre1);
  29. }
  30.  
  31.  
  32. }
  33.  
  34. void compareNombres(long nombre1,long nombre2,long nombre3)
  35.  
  36. {
  37. if (nombre1<nombre2)
  38. printf("PLUS!\n\n");
  39. else if (nombre1>nombre2)
  40. printf("MOINS!\n\n");
  41. else
  42. printf("BRAVO vous avez trouve le nombre mystere qui est %ld en %ld coups\n\n",nombre1,nombre3);
  43. }
  44.  
  45.  
  46.  
  47.  
  48.  
  49. void cacherNombreMystere(long cle)
  50.  
  51. {
  52. printf("Pour cacher le nombreMystere appuyez sur la touche 3:");
  53. scanf("%ld",&cle);
  54.  
  55. while (cle!=3)
  56. {
  57. printf("Pour cacher le nombreMystere appuyez sur la touche 3:");
  58. scanf("%ld",&cle);
  59. }
  60. /*Les deux lignes du dessous permettent de sauter plusieur ligne histoire de cacher ce que
  61. le joueur 1 a mi comme nombreMystere!*/
  62.  
  63. printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  64. printf("A vous de jouer! Bon courage!\n");
  65.  
  66. }
  67.  
  68.  
  69.  
  70. int main ( int argc, char** argv )
  71.  
  72. {
  73. long nombreMystere=0,nombreEntre = 0,nombreDeCoups=0,nombreDeJoueur,cacheMystere=0,niveau=0,MAX=0;
  74. const MIN = 1;
  75. int continuerPartie=1;
  76.  
  77. /*Toutes les lignes avant le switch permettent d'afficher le menu, les deux modes de jeu prendre en
  78. mémoire celui qui a été choisi.Elles permettent aussi d'afficher les différents niveaux de difficulté
  79. disponibles et de garder en mémoire celui qui à été choisi.*/
  80.  
  81. printf("==================================== MENU ====================================\n\n\n");
  82. printf("MODES DE JEU:\n\n");
  83. printf(" * 1 JOUEUR!\n\n");
  84. printf(" * 2 JOUEURS!\n\n");
  85. printf(" Si vous desirez jouer seul tapez 1 sinon tapez 2:");
  86. scanf("%ld",&nombreDeJoueur);
  87. printf("\n\n");
  88.  
  89. printf("========== NIVEAU DE DIFFICULTE ==========:\n\n\n");
  90. printf("1.EASY (nombreMystere compris entre 1 et 100)\n\n");
  91. printf("2.MEDIUM (nombreMystere compris entre 1 et 1000)\n\n");
  92. printf("3.HARD (nombreMystere compris entre 1 et 10000)\n\n");
  93. printf("4.GROS GEEK (nombreMystere compris entre 1 et 1000000)\n\n");
  94. printf("5.PERSON WITH SUICIDAL TENDENCIES (nombreMystere compris entre 1 et 1000000000)\n\n\n");
  95. printf("Quel niveau choisissez vous?:");
  96. scanf("%ld",&niveau);
  97.  
  98. /* Selon le niveau choisi soit 1,2,3,4, ou 5 une petite phrase d'encouragement est affichée ^^
  99. et la variable MAX reçoit la valeur Maximum du niveau correspondant.Tant que l'on ne donnne pas
  100. un niveau existant on nous le redemande!*/
  101.  
  102. while ((niveau==0) || (niveau>5))
  103.  
  104. {
  105. printf("Vous devez choisir un niveau existant:");
  106. scanf("%ld",&niveau);
  107. }
  108.  
  109.  
  110. switch (niveau)
  111. {
  112. case 1:
  113. printf("Vous avez choisi le mode EASY cela ne devrait pas etre trop difficile ^^\n\n");
  114. MAX=100;
  115. break;
  116. case 2:
  117. printf("Vous avez choisi le mode MEDIUM cela devrait etre un peu plus difficile\n\n");
  118. MAX=1000;
  119. break;
  120. case 3:
  121. printf("La le HARD ca se corse heyhey\n\n");
  122. MAX=10000;
  123. break;
  124. case 4:
  125. printf("La il faut vraiment etre fou!!\n\n");
  126. MAX=1000000;
  127. break;
  128. case 5:
  129. printf("Vous etes bon pour le cercueil ptdr\n\n");
  130. MAX=1000000000;
  131. break;
  132. }
  133.  
  134.  
  135.  
  136. if (nombreDeJoueur!=2)
  137.  
  138. {
  139. //Petite explication du mode un joueur.
  140. printf("Vous avez choisi le mode un joueur.Le but du est simple votre ordinateur va tirer au hasard un nombre entre 1 et %ld appele nombreMystere vous allez devoir trouver ce nombre.Il vous donnera des informations selon que votre chiffre est inferieur ou superieur au nombreMystere.\n\n",MAX);
  141.  
  142. do //Tant que l'on ne tape pas 0 à la fin d'une partie on revient dans la boucle.
  143. {
  144. nombreMystere=genereNombre(MIN,MAX);
  145.  
  146. //Initialisation d'un nombre aleatoire a chaque début de partie!
  147.  
  148. do
  149. //Tant que l'on à pas trouvé le nombreMystere on nous le redemande.
  150. {
  151.  
  152. demande_nombreMystere(&nombreEntre,&nombreDeCoups,niveau,MAX);
  153. nombreDeCoups++;
  154. /*Lorsque l'on sort de la boucle c'est que la valeur est correctement comprise entre
  155. les valeurs correspondantes à celles du niveau choisi donc on peut la comparer au
  156. nombreMystere que l'ordinateur à tiré au hasard!*/
  157. compareNombres(nombreEntre,nombreMystere,nombreDeCoups);
  158. }
  159. while (nombreEntre!=nombreMystere);
  160. nombreDeCoups=0;
  161.  
  162. /*Dès que l'on a trouvé le nombreMystere peut importe que l'on continue ou non
  163. la variable nombreDeCoups est remise à 0. Comme ça si on décide de rejouer la variable
  164. nombreDeCoups ne contiendra pas la valeur qu'elle avait en fin de partie*/
  165.  
  166. printf("Si vous voulez recommencer une partie tapez 1 sinon tapez 0:");
  167. scanf("%ld",&continuerPartie);
  168. }
  169. while(continuerPartie);
  170.  
  171.  
  172. }
  173.  
  174. else //Si la personne à tapé 2 alors le mode deux joueurs est initialisé.
  175.  
  176. {
  177. //Petite explication du mode deux joueurs.
  178. printf("Vous avez choisi le mode 2 joueurs. Un des joueurs va rentrer un nombre entre 1 et %ld et l autre joueur va devoir trouver le nombre que son adversaire a rentre au debut.\n\n",MAX);;
  179.  
  180. do
  181. {
  182. /* En rentrant dans la boucle on demande au premier joueur de rentrer une valeur, tant que
  183. celle-ci est superieur au nombre Maximum du niveau choisi alors on lui redemande une valeur
  184. comprise entre 1 et le Maximum! En sortant de la boucle la valeur de nombreMystere est correcte
  185. et la partie peut commencer.*/
  186.  
  187. printf("Entrez le nombreMystere que votre adversaire va devoir trouver!:");
  188. scanf("%ld",&nombreMystere);
  189.  
  190. while(nombreMystere>MAX)
  191.  
  192. {
  193. printf("Le nombre que vous avez choisi est superieur a %ld choisissez en un qui est inferieur ou egal\n\n",MAX);
  194. printf("Entrez le nombreMystere que votre adversaire va devoir trouver!:");
  195. scanf("%ld",&nombreMystere);
  196. }
  197.  
  198. cacherNombreMystere(cacheMystere);
  199.  
  200. do
  201.  
  202. {
  203.  
  204. demande_nombreMystere(&nombreEntre,nombreDeCoups,niveau,MAX);
  205. nombreDeCoups++;
  206. compareNombres(nombreEntre,nombreMystere,nombreDeCoups);
  207.  
  208. }
  209. while (nombreEntre!=nombreMystere);
  210. nombreDeCoups=0;
  211.  
  212. printf("Si vous voulez recommencer une partie tapez 1 sinon tapez 0:");
  213. scanf("%ld",&continuerPartie);
  214. }
  215. while(continuerPartie);
  216.  
  217. }
  218.  
  219. /*On retourne dans la boucle tant que continuerPartie à la valeur 1
  220. sinon on sort de la boucle et le programme se termine*/
  221.  
  222. printf("MERCI D AVOIR JOUER AU JEU DU PLUS OU MOINS A BIENTOT!\n\n");
  223. system("PAUSE");
  224. return 0;
  225. }






Je vous explique mon problème lorsque par exemple vous lancez le mode 1 joueur et le niveau 1 on vous demande le nombreMystere une fois trouvé on vous dit BRAVO et on vous donne le nombre de coups tout est nickel. Seulement toujours dans le niveau 1 si vous essayé de mettre des valeurs supérieur à 100 celle-ci ne sont pas compté en tant que coups par exemple si vous tapez:400 puis 500 puis 10 puis 13: 13 étant le nombre mystere on va vous dire BRAVO..... en 2 coups. Oui sauf que moi je voudrais que ça soit 5 coups ^^. C'est donc un pb avec nombreDeCoups mais n'ayant pas encore vu les pointeurs j'ai un peu de mal merci de m'aider ça fait depuis hier matin que j'y suis je début. Dite moi ce que je dois écrire s'il vous plait je déprime après 10heures de recherche je suis sur que c'est un truc de merde en plus. Merci beaucoup!!

Autres pages sur : langage probleme terminer petit programme

11 Septembre 2008 22:56:05

Putain j'ai trouvé!!!!! C'est pas *nombre3++ mais (*nombre3)++!!!! Faut faire gaf à ça bordel :s:s
a b L Programmation
13 Septembre 2008 18:33:48

carly31, je ne suis pas d'accord avec toi.
Ce n'est pas parce qu'un concepteur du C fait un bouquin qu'il est pédagogique.
Le site du zéro a l'avantage d'être pédagogique. C'est sûr que pour avoir des bases solides, ça ne suffit pas, mais pour s'initier (surtout pour les jeunes qui ne connaissent rien à la programmation) ça peut être un bon site.
Quant aux connaissances des "IT consultants pros"... Bon allez, je n'ai pas envie d'être méchant... :) 
15 Septembre 2008 07:45:36

Ouai bien envoyé CRicky !
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