Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3026 connectés 

  FORUM HardWare.fr
  Programmation
  C

  problème de programmation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de programmation

n°2010232
artydu34
Posté le 20-07-2010 à 09:31:43  profilanswer
 

bonjour a tous ! voila mon problème : enfait je suis nouveau dans le domaine de la programmation, et j'utilise comme logiciel code::blocks. et la, j'essaie de faire un petit programme et il me met une erreur que je ne vois pas, voilamon programme :  
 
#include <stdlib.h>
#include <time.h>
 
int main()
{
    const int MAX = 100, MIN = 1;
    int nombreMystere, nombreATrouver = 0;
 
    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
 
    printf("aller on va jouer a mon tout premier jeu ! sa consiste a trouver le nombre mystere !!" );
    do
    {
    printf("donnez moi votre nombre : " );
    scanf("%d", &nombreATrouver);
 
    if (nombreMystere = nombreATrouver);
    {
        printf("bravo !! c'est le bon nombre !" );
    }
   else  
    {
       while (nombreMystere != nombreATrouver);
    }
    }
 
}
 
 
et le logiciel me met qu'il y a une erreur a la ligne 23 ( je cite l'erreur) : syntax error before "else" mais avant else y a rien  :??: et a la fin de la ligne 22 je ne voit rien. voyez vous le problème ??
 
 
merci d'avance de vos réponse
 
arty


Message édité par artydu34 le 20-07-2010 à 09:35:50
mood
Publicité
Posté le 20-07-2010 à 09:31:43  profilanswer
 

n°2010236
olivthill
Posté le 20-07-2010 à 09:44:25  profilanswer
 

Au lieu de

printf("aller on va jouer a mon tout premier jeu ! sa consiste a trouver le nombre mystere !!" );

Ecrire

printf("Aller ! On va jouer à mon tout premier jeu ! Ca consiste à trouver le nombre mystère !" );

 
 
Au lieu de

  if (nombreMystere =

Ecrire

  if (nombreMystere ==


 
Au lieu de

nombreATrouver);

Ecrire

nombreATrouver)

Ce point virgule, en trop, met fin à ce qui suit le if. A cause de cela, l'accolade suivante démarre un nouveau bloc qui n'a rien à voir avec le if, puisque le if est terminé par ce point virgule. Il est possible de créer un bloc entre accolades à n'importe quel endroit, indépendamment d'un if. Puis, le compilateur voit le else et ne comprend plus rien, car le if est terminé depuis longtemps par le point virgule en trop.
 
Déplacer plus bas la ligne

 while (nombreMystere != nombreATrouver);


Message édité par olivthill le 20-07-2010 à 09:55:38
n°2010238
artydu34
Posté le 20-07-2010 à 09:52:42  profilanswer
 

merci de ton aide précieuse et très rapide qui a dailleurs résolu ce problème mais maintenant j'ai un autre  
problème ... voila l'endroit ou ça ce passe :
 
 
else
    {
       while (nombreMystere != nombreATrouver);
    }
    }
} <<
 
et code::blocks me dit error : syntax error before '}' token (celui de la fin ou il y a << que j'ai rajouter ici, ce n'est donc pas sur le programme x) )
 
PS : désoler d'être nul en programmation ^^


Message édité par artydu34 le 20-07-2010 à 09:54:52
n°2010241
olivthill
Posté le 20-07-2010 à 09:58:00  profilanswer
 

Oui, j'ai vu cette erreur du while avec un peu de retard, et j'ai édité mon message. Le mieux serait de revoir la syntaxe du while, parce qu'il y a plusieurs cas à connaitre, et surtout, parce que ce cela ne se met pas dans un else.

n°2010245
artydu34
Posté le 20-07-2010 à 10:01:36  profilanswer
 

c'est a dire que je met le while en dessous de else (après }) ? mais je met quoi dans else alors ?

n°2010278
artydu34
Posté le 20-07-2010 à 10:25:45  profilanswer
 

ba après avoir un peu bidouiler le programme sa met encore une autre erreur --" voila le programme :
 
else if (nombreMystere > nombreATrouver);
        printf("c'est plus !! \n\n" );
 
    else (nombreMystere < nombreATrouver);
        printf("c'est moin !! \n\n" );
 
    } while (nombreMystere != nombreATrouver);
}
 
et ça ma met l'erreur : error : syntax error before "else"

n°2010293
olivthill
Posté le 20-07-2010 à 10:40:32  profilanswer
 

Attention aux points virgules ! C'est très important en C. Il faut revoir le cours.


Message édité par olivthill le 20-07-2010 à 10:40:47
n°2010300
artydu34
Posté le 20-07-2010 à 10:47:55  profilanswer
 

c'est a dire ?

n°2010311
artydu34
Posté le 20-07-2010 à 11:04:23  profilanswer
 

c'est bon j'ai copier coller le morceau ou il y avait le problème et sa marche. merci beaucoup pour ton aide olivthill =)

n°2010315
olivthill
Posté le 20-07-2010 à 11:10:11  profilanswer
 

C'est à dire qu'on a le droit de mettre un point virgule à la fin d'un if, mais qu'il ne faut jamais le faire, sauf dans des cas très très particuliers.
 
En informatique, il faut être très rigoureux, y compris sur la ponctuation (et vous ne semblez pas être très rigoureux sur votre écriture, quand on voit vos absences de majuscules en français).
 
J'ai édité ma première réponse pour expliquer un peu plus le problème du point virgule. Ce sont des choses qui ne s'inventent pas, mais qu'il faut savoir. Donc, je vais expliquer encore d'avantage ici :
 
Après un if, on a soit un bloc entre accolades, soit une ligne terminée par un point virgule. Dans ce dernier cas, une ligne terminée par un point virgule peut être juste un point virgule sans rien avant. Alors, un point virgule tout seul est parfois considéré comme étant équivalent à un bloc entier. C'est pour cela qu'il ne faut pas en mettre à la fin d'un if.
 
Edit : Et que viennent faire ici des parenthèses après le else. Arghh, je m'étrangle. Il faut des accolades, pas des parenthèses. Faîtes attention aux détails.


Message édité par olivthill le 20-07-2010 à 11:14:06

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  problème de programmation

 

Sujets relatifs
programmation de GnomeCallerID gtk et c (gros probleme !)probleme de programmation en C
Problème programmation C++[G TRouvé] A locker merci modo
probleme avec programmation csharpprobleme de programmation
Probleme programmation en C jeu de la vieProgrammation C, problème :(
[Résolu] Problème Programmation MFCprobléme programmation AS
Plus de sujets relatifs à : problème de programmation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR