Probléme programmation du jeu "plus ou moins"

Fermé
Coltazoplo - 18 avril 2010 à 21:01
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 20 avril 2010 à 21:44
Bonjours, voila mon code et mon probléme...
C'est un jeu ou il faut trouver le bon nombre...


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ( int argc, char** argv )
{
int max = 0;
const MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; //Generateur de chiffre

}


 {

 {
     printf("Salut, c'est le jeu du Plus ou Moins...\n\n");


         int nombreEntrer = 0;
         int nombreMystere = 0;
         int niveau = 0;
         int coup = 0;
         printf("Quel niveau veut-tu jouer??\n\n\n");
         printf("Niveau 1\n\n");
         printf("Niveau 2\n\n");
         scanf("%d", &niveau);
         printf("Ah, tu as choisi le niveau %d.\n\n", niveau);//choix du niveau
 }
  switch(niveau)
        {
            case 1:
                max = 100;
                break;

            case 2:
                max = 500;
                break;

            case 3:
                max = 1000;
                break;

            default:
                printf("Erreur lors du script!\n");
                break;
        }
  do
     {
         printf("Alors, Quel est le chiffre???\n\n");
      scanf("%d", &nombreEntrer);
      coup ++;


      if (nombreMystere < nombreEntrer)
      printf("Desole, c'est moins...\n\n");
      else if (nombreMystere > nombreEntrer)
      printf("Desole, c'est plus...\n\n");
      else
      printf("Bien joue!!!\n\n");

  }while (nombreMystere = nombreEntrer)

  if (nombreMystere = nombreEntrer)
  {
      printf("Vous avez trouvez le nombre Mystere en %d essai", coup);
  }

return 0;
 }













Alors j'ai des problémes au lignes 7, 9(4erreurs),6,14,24(7 erreurs),25(2erreurs),26(3erreurs),27(7erreurs),28(3erreurs),,51(3erreurs), et 52....Je sais je ne suis pas terrible en programmation mais j'ai la motivation =P....
Si vous avez besoin de détails par rapport au erreurs ne vous génez pas....Je vais quand même pas me plaindre si vous voulez m'aider....
Voilà merci.

Ps: Je ne vous demande pas de juste corriger mes erreurs mais aussi de me les expliquées car j'aimerais progresser....

Merci d'avance =)
A voir également:

7 réponses

rara-wow Messages postés 725 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 2 octobre 2010 94
18 avril 2010 à 21:34
Bonjour,

Le logiciel a trouvé 4 erreurs :

Ligne 7 il te manque le spécificateur de type ( int, double etc... ),

Ligne 9 il faut déclarer le "nombreMystere" par exemple

int nombreMystere = 0;

Ligne 9 Il faut en fait que tu change en haut de ton code
int max = 0;


Par

int MAX = 0;


Ligne 14 j'ai pas trouvé mais j'me creuse la tête ^^'
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
18 avril 2010 à 21:40
Bonjour,

En plus de te donner le numéro de lignes des erreurs, ton compilateur te fournit un message qui explique ce qui ne va pas souvent.

A la ligne, const MIN = 1; Tu définis la variable MIN comme constante, mais tu ne précises pas son type. Il faut mettre : const int MIN = 0 ; (si tu souhaites un int).

nombreMystere = (rand() ...
Il faut déclarer nombreMystere... int nombreMystere;

Ensuite, ton utilisation des accolades est à revoir.

Tu refermes après : nombreMystere ton accolade, ce qui finit la fonction main. Tout ce qui est après est donc en dehors de toute fonction.

Je vois après, deux accolades ouvrantes alors qu'il n'y a pas besoin. Les accolades ont un usage bien précis en C.

J'ai pas regardé le reste, mais corrige déjà ceci, et la prochaine fois colle les messages d'erreur de ton compilateur.

Cdlt,
1
Ok, merci, je corrige sa demain soir et je colle mes erreurs aussi... Bon j'y vais merci encore =)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
20 avril 2010 à 08:51
Petite question ? Pour toi, à quoi ça sert les accolades ? Car j'ai l'impression que tu en mets pour regrouper les instructions ?

Sinon, il faut lire ses messages d'erreur, ils sont souvent bien explicite.
Par exemple : C:\Users\thibaut\Desktop\Calcul\main.c|11|error: 'nombreMystere' undeclared
Signifie qu'à la ligne 11, tu utilises une variable "nombreMystere" qui est non déclarée.
En effet, tu mets : nombreMystere=0; mais de quel type est la variable ? Il faut mettre : type variable; soit int nombreMystere dans ton cas.

Les autres messages d'erreur sont similaires, tu peux donc les corriger de toi-même.

Sinon une erreur que ton compilateur n'a pas signalé car ce n'est pas une erreur de sémantique.
while (nombreMystere = nombreEntrer)
Ceci ne va pas faire tant que : nombreMystere égal à nombreEntrer. L'opérateur de comparaison en C est l'opérateur double égal (==). Le simple égal sert à l'affectation. Donc ton instruction (nombreMystere = nombreEntrer) sera vraie quand nombreMystere différent de 0. Correction : while (nombreMystere == nombreEntrer)
Cette remarque s'applique aussi pour ton if.
1
rara-wow Messages postés 725 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 2 octobre 2010 94
18 avril 2010 à 21:19
J'suis débutant tout comme toi mais il m'semble reconnaitre le tuto du site du zéro donc je vais tester ton code dessuite :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjours,


Alors, déjà je souhaite à vous remercier de cette aide...
J'ai fait comme vous m'avez dit et j'ai corriger les erreurs maintenant voilà ce qu'il me reste...




||=== Calcul, Debug ===|
C:\Users\thibaut\Desktop\Calcul\main.c||In function 'main':|
C:\Users\thibaut\Desktop\Calcul\main.c|11|error: 'nombreMystere' undeclared (first use in this function)|
C:\Users\thibaut\Desktop\Calcul\main.c|11|error: (Each undeclared identifier is reported only once|
C:\Users\thibaut\Desktop\Calcul\main.c|11|error: for each function it appears in.)|
C:\Users\thibaut\Desktop\Calcul\main.c|23|warning: unused variable 'nombreEntrer'|
C:\Users\thibaut\Desktop\Calcul\main.c|24|warning: unused variable 'nombreMystere'|
C:\Users\thibaut\Desktop\Calcul\main.c|26|warning: unused variable 'coup'|
C:\Users\thibaut\Desktop\Calcul\main.c|33|error: 'niveau' undeclared (first use in this function)|
C:\Users\thibaut\Desktop\Calcul\main.c|36|error: 'max' undeclared (first use in this function)|
C:\Users\thibaut\Desktop\Calcul\main.c|54|error: 'nombreEntrer' undeclared (first use in this function)|
C:\Users\thibaut\Desktop\Calcul\main.c|55|error: 'coup' undeclared (first use in this function)|
C:\Users\thibaut\Desktop\Calcul\main.c|67|error: syntax error before "if"|
||=== Build finished: 8 errors, 3 warnings ===|



Et je vous remet mon code actuel si vous en avez besoin:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ( int argc, char** argv )

{
{
int MAX = 0;
const int MIN = 1;
srand(time(NULL));
nombreMystere = 0;
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; //Generateur de chiffre

}




 {
     printf("Salut, c'est le jeu du Plus ou Moins...\n\n");


         int nombreEntrer = 0;
         int nombreMystere = 0;
         int niveau = 0;
         int coup = 0;
         printf("Quel niveau veut-tu jouer??\n\n\n");
         printf("Niveau 1\n\n");
         printf("Niveau 2\n\n");
         scanf("%d", &niveau);
         printf("Ah, tu as choisi le niveau %d.\n\n", niveau);//choix du niveau
 }
  switch(niveau)
        {
            case 1:
                max = 100;
                break;

            case 2:
                max = 500;
                break;

            case 3:
                max = 1000;
                break;

            default:
                printf("Erreur lors du script!\n");
                break;
        }
  do
     {
         printf("Alors, Quel est le chiffre???\n\n");
      scanf("%d", &nombreEntrer);
      coup ++;


      if (nombreMystere < nombreEntrer)
      printf("Desole, c'est moins...\n\n");
      else if (nombreMystere > nombreEntrer)
      printf("Desole, c'est plus...\n\n");
      else
      printf("Bien joue!!!\n\n");

  }while (nombreMystere = nombreEntrer)

  if (nombreMystere = nombreEntrer)
  {
      printf("Vous avez trouvez le nombre Mystere en %d essai", coup);
  }

return 0;
}



Voilà en espérant que cela vous suffira...

Encore merci.


Simple question: fiddy, tu maitrise bien le language C..?
0
Alors encore merci pour ces réponses...Mais je ne comprend pas ce que veut dire cette erreur:
C:\Users\thibaut\Desktop\Calcul\main.c|32|error: 'niveau' undeclared (first use in this function)| :)??
VOilà et maitenant mes autres erreurs:
C:\Users\thibaut\Desktop\Calcul\main.c||In function 'main':|
C:\Users\thibaut\Desktop\Calcul\main.c|9|warning: unused variable 'nombreEntrer'|
C:\Users\thibaut\Desktop\Calcul\main.c|11|warning: unused variable 'niveau'|
C:\Users\thibaut\Desktop\Calcul\main.c|12|warning: unused variable 'coup'|
C:\Users\thibaut\Desktop\Calcul\main.c|32|error: 'niveau' undeclared (first use in this function)|
C:\Users\thibaut\Desktop\Calcul\main.c|32|error: (Each undeclared identifier is reported only once|
C:\Users\thibaut\Desktop\Calcul\main.c|32|error: for each function it appears in.)|
C:\Users\thibaut\Desktop\Calcul\main.c|38|error: 'MAX' undeclared (first use in this function)|
C:\Users\thibaut\Desktop\Calcul\main.c|56|error: 'nombreEntrer' undeclared (first use in this function)|
C:\Users\thibaut\Desktop\Calcul\main.c|57|error: 'coup' undeclared (first use in this function)|
C:\Users\thibaut\Desktop\Calcul\main.c|60|error: 'nombreMystere' undeclared (first use in this function)|
C:\Users\thibaut\Desktop\Calcul\main.c|69|error: syntax error before "if"|
||=== Build finished: 8 errors, 3 warnings ===|


Voilà, encore merci et a bientôt.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
20 avril 2010 à 21:44
C:\Users\thibaut\Desktop\Calcul\main.c|32|error: 'niveau' undeclared (first use in this function)| :)??
Ca signifie que la variable niveau est non déclarée.
C'est exactement la même erreur que nombreMystere undeclared.

Tu n'as toujours pas répondu à ma question. Pour toi à quoi sert les accolades ?
Si je te pose la question, c'est que tu utilises des accolades à tort. Tu n'as pas besoin de rouvrir des accolades dans ton main.
Ensuite tu as déclaré tes variables comme je t'ai demandé, sauf que tu l'as fait au mauvais endroit. Il faut le faire juste après le main.
0