Tom's Guide > Forum > Programmation > Langage C , problème pour terminer mon petit programme...
Langage C , problème pour terminer mon petit programme... - Programmation
TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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.

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







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!!

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Putain j'ai trouvé!!!!! C'est pas *nombre3++ mais (*nombre3)++!!!! Faut faire gaf à ça bordel :s:s

Répondre à Overlolo

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... :)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Ouai bien envoyé CRicky !

Répondre à ptitcois
Tom's Guide > Forum > Programmation > Langage C , problème pour terminer mon petit programme...
Aller à :

Il y a 1740 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens