Syntax error before "else" :o

Résolu/Fermé
coleturner Messages postés 35 Date d'inscription samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 - 17 mars 2008 à 22:01
gregouz62 Messages postés 125 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 20 octobre 2009 - 15 sept. 2009 à 10:10
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
17 mars 2008 à 22:41
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 samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
17 mars 2008 à 22:52
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
17 mars 2008 à 22:56
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 samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
17 mars 2008 à 23:02
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
17 mars 2008 à 23:09
#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 samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
18 mars 2008 à 11:05
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
18 mars 2008 à 11:15
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 samedi 15 mars 2008 Statut Membre Dernière intervention 20 avril 2008 2
18 mars 2008 à 11:24
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
18 mars 2008 à 11:28
Bonne chance :-)
0
coolboy00 Messages postés 5 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 17 septembre 2009
15 sept. 2009 à 04:34
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 mercredi 26 août 2009 Statut Membre Dernière intervention 20 octobre 2009 11
15 sept. 2009 à 10:10
Bonjour,
tu as mis ; après la condition de ton else if, c'est sans doute pour ça que ça ne marche pas !
0