Syntax error before "else" :o

[Résolu/Fermé]
Signaler
Messages postés
35
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 avril 2008
-
Messages postés
125
Date d'inscription
mercredi 26 août 2009
Statut
Membre
Dernière intervention
20 octobre 2009
-
Bonjour,
je suis débutant, je viens de crée un mini jeux sur console, mais vrément un tout mini jeux...
voici le code :

/* PLUS ou MOINS
Petit jeux crée par un débutant en programmation
Le but du jeux est de trouver le nombre mystere en un minimun de propositions
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[])
{

long NombreMistere = 0, NombreEntre = 0; // Déclarer les deux variables
const MAX = 100, MIN = 1; // chiffre MAX et chiffre MIN que peut prendre l'ordi
srand(time(NULL));
NombreMistere = (rand() % (MAX - MIN + 1)) + MIN;

while(NombreEntre)// la boucle en while
{

printf("Quel est le nombre mystere?\n");
scanf("%ld", &NombreEntre);

// les conditions

if(NombreEntre < NombreMistere)
printf("C'est plus !\n\n");

else if(NombreEntre > NombreMistere)
printf("C'est moins !\n\n");
}

else(NombreMistere != NombreEntre) *************************** syntax error before "else"
printf("Bravo, vous avez trouve le nombre Mystere ! ! !\n\n");

system("PAUSE");
return 0;
}


Le probleme c'est que la zone de la more m'affiche : syntax error before "else" le else ou j'ai mis des **** L 33
mais je ne voie pas l'erreur... :o

11 réponses

Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521
Salut,

Oui tu mets un else après un while, ça n'a pas de sens...
Messages postés
35
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 avril 2008
2
ha ok ... autant pour moi
je viens de le mettre a l'interieur et ... toujours pas, cette fois ça marque :

C:\Dev-Cpp\les projets\Makefile.win [Build Error] [test2.exe] Error 1

et il n'y a aucune ligne sur fond rouge :o
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521
Et aussi ceci n'a pas non plus de sens:
else(NombreMistere != NombreEntre)


Tu mets un else suivi d'une condition.
Peut être que tu voulais faire un else if.
Messages postés
35
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 avril 2008
2
a bon?
alors comment je pourrai dire "sinon si le nombre mystere est egale au nombre entre, écrivez bravo...?"
j'ai essayer avec == et ça ne fonctionne pas
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[])
{

    long NombreMistere = 0, NombreEntre = 0; // Déclarer les deux variables
    const MAX = 100, MIN = 1; // chiffre MAX et chiffre MIN que peut prendre l'ordi
    srand(time(NULL));
    NombreMistere = (rand() % (MAX - MIN + 1)) + MIN;

    while(NombreMistere != NombreEntre)// la boucle en while
    {

        printf("Quel est le nombre mystere?\n");
        scanf("%ld", &NombreEntre);

        // les conditions

        if(NombreEntre < NombreMistere){
            printf("C'est plus !\n\n");
        }

        else if(NombreEntre > NombreMistere){
            printf("C'est moins !\n\n");
        }

        else {
            printf("Bravo, vous avez trouve le nombre Mystere ! ! !\n\n");
        }
    }



system("PAUSE");
return 0;
}


Tu as testé s'il était plus petit, s'il était plus grand. Si aucun de ces deux cas n'est vrai, alors c'est qu'il est égal, il suffit d'un petit else dans la boucle ;-)

De même, ta boucle méritait cette nouvelle condition: tant que nombreMystere est différent de nombreRentré, on continue. S'ils sont égaux, c'est qu'on a trouvé la solution, donc fini de boucler.

Tu comprends?
Messages postés
35
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 avril 2008
2
oui, j'ai compis,
j'ai tout recommancé cette fois en do ... while :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[])
{

long NombreMystere = 0, NombreEntre = 0;
const long MAX = 100, MIN = 1;

srand(time(NULL));
NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

do
{
printf("Entrez le nombre mystere");
scanf("%ld", NombreEntre);
printf("\n");

if (NombreEntre < NombreMystere)
printf("C'est plus\n\n");

else if (NombreEntre > NombreMystere)
printf("C'est moins\n\n");

else
printf("Bravo vous avez trouvez le nombre Mystere\n\n");

} while(NombreEntre != NombreMystere)


system("PAUSE");
return 0;
}


syntax error before "system"

y'a une erreur avant system? je ne vois pas...
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521
y'a une erreur avant system? je ne vois pas...

Un point virgule manquant après la parenthèse fermante du while ;-)
Messages postés
35
Date d'inscription
samedi 15 mars 2008
Statut
Membre
Dernière intervention
20 avril 2008
2
exacte, je ne savais même pas qu'il fallait un ; apres un while... comme quoi on en apprend tous les jours ^^
Merci beaucoup pour ton aide kilian :)
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 521
Bonne chance :-)
Messages postés
5
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
17 septembre 2009

slt a tous je suis debutant dans la programmation mais mon bleme est ke apres avoir utiliser les condition if,else,et else lors de la coppilation code blocks me met tjrs erroe syntax error before "else"

voici le mini programme

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int age = 20 ;

if ( age >= 18 )
{
printf ( "vous etes majeur\n");
}

else if( age > 10 );
{
printf (" bon t'es pas encore trop jeune\n");
}
else
{
printf ( " vous etes jeune ");
}

return 0;
}

Merci de m'aider à trouver la faille merci d'avance
Messages postés
125
Date d'inscription
mercredi 26 août 2009
Statut
Membre
Dernière intervention
20 octobre 2009
10
Bonjour,
tu as mis ; après la condition de ton else if, c'est sans doute pour ça que ça ne marche pas !