Syntax error before "else" :o

Résolu
coleturner Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
gregouz62 Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   -
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

kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Salut,

Oui tu mets un else après un while, ça n'a pas de sens...
0
coleturner Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   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
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
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.
0
coleturner Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   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
0

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

Posez votre question
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
#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?
0
coleturner Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   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...
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
y'a une erreur avant system? je ne vois pas...

Un point virgule manquant après la parenthèse fermante du while ;-)
0
coleturner Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   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 :)
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Bonne chance :-)
0
coolboy00 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
gregouz62 Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   11
 
Bonjour,
tu as mis ; après la condition de ton else if, c'est sans doute pour ça que ça ne marche pas !
0