[c] problème débutant

problème débutant [c] - C - Programmation

Marsh Posté le 10-03-2008 à 22:18:42    

bonsoir a tous, :bounce:  
 
je commence tout juste le langage C et j'ai un souci,
lorsque je lance le programme, je ne peu pas choisir le niveau, il me dit tout de suite que j'ai choisi ne niveau 0.
(je n'ai pas encore mi complètement en place la modification du niveau)
 
voici mon code:
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int main(int argc, char *argv[])
  5. {
  6. long niveau =0;
  7.    
  8. printf("\n\nbienvenue dans le premier mini-jeux de m4TT4m :)\n\n" );
  9. printf("quel niveau veu tu jouer?\n\n" );
  10. printf(" 1. de 1 a 100\n 2. de 1 a 1000\n 3. de 1 a 10000\n" );
  11. /* début de la boucle vérification du choix de niveau */
  12. while (niveau !=1)
  13. {
  14.       printf("choisi ton niveau:" );
  15.       scanf("%ld",&niveau);
  16. }
  17. /* fin de la boucle de vérification de niveau */
  18. printf("\ntu a choisi le niveau %ld\n",niveau);
  19. printf("trouve le nombre mystere!\n\n" );
  20. long nombreMystere = 0 , nombre_entre =0, compteur =1;
  21. const long MAX = 100, MIN = 1;
  22. srand(time(NULL));
  23. nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
  24. /* début de boucle d'attende du bon chifre "mystère" */
  25. do
  26. {
  27.     printf("essai %ld   ",compteur);
  28.     scanf("%ld",&nombre_entre);
  29.     compteur++;
  30. if (nombre_entre > nombreMystere)
  31.     printf("le nombre est plus petit\n\n" );
  32. else if (nombre_entre < nombreMystere)
  33.      printf("le nombre est plus grand\n\n" );
  34. else
  35.     printf("bravo! tu as gagne en %ld coups! le nombre etait %ld\n", compteur, nombreMystere);
  36. } while (nombre_entre != nombreMystere);
  37. /* fin de boucle d'attende du bon chifre "mystère" */
  38.   system("PAUSE" );
  39.   return 0;
  40. }


 
merci pour votre aide


Message édité par martomy le 10-03-2008 à 23:11:01
Reply

Marsh Posté le 10-03-2008 à 22:18:42   

Reply

Marsh Posté le 10-03-2008 à 22:24:00    

"while", en anglais, se traduit par "tant que".
 
Donc, "while (niveau ==3)" signifie "tant que niveau est égal à 3".
 
Je te laisse conclure tout seul. [:dawa]
 
Deux remarques rapides :

  • Indente ton code ! Ça n'a l'air de rien, mais c'est extrêmement important pour quiconque souhaite lire et comprendre ton code. Avec "quiconque" == "toi" compris, testé et approuvé. [:dawa]
  • Préfère la combo fgets() + fonction de conversion (strtol(), strtod() et consors) à scanf(). La fonction scanf() est inutilement difficile d'usage pour ce genre de cas, et il vaut mieux bien savoir ce que l'on fait avant de l'utiliser.

Reply

Marsh Posté le 10-03-2008 à 23:08:14    

a oui en effet c'est idiot de ma part :/
j'ai donc remplacé while (niveau ==3) par while (niveau !=3)
 
mais je n'ai pas trouvé comment permettre les niveau 1,2 et 3 j'ai pensé à while (niveau !=1,2,3) mais niet, ça ne marche pas :s
 

Citation :

Préfère la combo fgets() + fonction de conversion (strtol(), strtod() et consors) à scanf()


comme je suis débutant je n'ai encore jamais entendu parler de ces façons de faire  :sweat:  
 
merci pour tes remarques

Reply

Marsh Posté le 10-03-2008 à 23:11:10    

Le mieux, c'est d'écrire "tant que niveau < 1 ou > 3" :

while (niveau < 1 || niveau > 3)

 

Pour fgets() et tout et tout, je te conseille ce lien : http://mapage.noos.fr/emdel/notes.htm#saisie
(et tout le site en général : http://mapage.noos.fr/emdel )


Message édité par Elmoricq le 10-03-2008 à 23:11:29
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed