IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Je ne comprends pas les messages d'erreur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut Je ne comprends pas les messages d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include <cstdlib>
    #include <iostream>
    #include <math.h>
    using namespace std;
     
    int main(int argc, char *argv[])
    {
    long menu()
    {
    long choix = 0;
    while (choix < 1 || choix > 4)
    {
    printf("Menu :\n");
    printf("1 : Poulet de dinde aux escargots rotis a la sauce bearnaise\n");
    printf("2 : Concombres sucres a la sauce de myrtilles enrobee de chocolat\n");
    printf("3 : Escalope de kangourou saignante et sa gelee aux fraises poivree\n");
    printf("4 : La surprise du Chef (j'en salive d'avance...)\n");
    printf("Votre choix ? ");
    scanf("%ld", &choix);
    }
    return choix;
    }
    int main(int argc, char *argv[])
    {
    switch (menu())
    {
    case 1:
    printf("Vous avez pris le poulet\n");
    break;
    case 2:
    printf("Vous avez pris les concombres\n");
    break;
    case 3:
    printf("Vous avez pris l'escalope\n");
    break;
    case 4:
    printf("Vous avez pris la surprise du Chef. Vous etes un sacre aventurier
    dites donc !\n");
    break;
    }
    system("PAUSE");
    return 0;
    }

    Quand je compile il m'affiche sa


    C:\Dev-Cpp\main.cpp In function `int main(int, char**)':
    10 C:\Dev-Cpp\main.cpp `choix' undeclared (first use this function)
    (Each undeclared identifier is reported only once for each function it appears in.)
    At global scope:
    28 C:\Dev-Cpp\main.cpp expected unqualified-id before "switch"
    28 C:\Dev-Cpp\main.cpp expected `,' or `;' before "switch"
    48 C:\Dev-Cpp\main.cpp expected constructor, destructor, or type conversion before '(' token
    48 C:\Dev-Cpp\main.cpp expected `,' or `;' before '(' token
    49 C:\Dev-Cpp\main.cpp expected unqualified-id before "return"
    49 C:\Dev-Cpp\main.cpp expected `,' or `;' before "return"
    50 C:\Dev-Cpp\main.cpp expected declaration before '}' token
    C:\Dev-Cpp\Makefile.win [Build Error] [main.o] Error 1
    Aidé moi svp car sa fait un bye que je suis deçu et que je ne trouve pas !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 157
    Billets dans le blog
    151
    Par défaut
    Bonjour,

    Le forum DVP contient des extraits de haute technologie digne du Web 3.0. L'une d'entre elle est la balise [ CODE ] [ /CODE ] (sans les espaces). Celle-ci est accessible par un clic sur le bouton '#' lors de l'édition du message.
    Cela permet d'activer une présentation claire et coloré de votre code.

    J'ai un conseil pour votre projet, désinstallez dev-cpp et installé son successeur spirituel et bien supérieur qu'est Code::Block (vous ne serait pas perdu)

    Maintenant, le code \o/

    J'ai regardé un peu le code, et je vois deux fois... ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int main(int argc, char *argv[])
    {
    Donc déjà, il est une fois de trop. Après, on voit que la fonction menu() est déclaré dans la fonction main(). Ce n'est pas possible. Donc sortez là du corps de main().

    Votre code est du C ... si je ne me trompe pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using namespace std;
    Ceci ce n'est qu'en C++ ... donc vous pouvez l'enlever (dans tout les cas vous pouvez l'enlever de toute façon :p)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #include <cstdlib>
    #include <iostream>
    #include <math.h>
     
     
    int main(int argc, char *argv[])
    {
    {
    long choix = 0;
    while (choix < 1 || choix > 4)
    {
    printf("Menu :\n");
    printf("1 : Poulet de dinde aux escargots rotis a la sauce bearnaise\n");
    printf("2 : Concombres sucres a la sauce de myrtilles enrobee de chocolat\n");
    printf("3 : Escalope de kangourou saignante et sa gelee aux fraises poivree\n");
    printf("4 : La surprise du Chef (j'en salive d'avance...)\n");
    printf("Votre choix ? ");
    scanf("%ld", &choix);
    }
    return choix;
    }
    {
    switch (menu)
    {
    case 1:
    printf("Vous avez pris le poulet\n");
    break;
    case 2:
    printf("Vous avez pris les concombres\n");
    break;
    case 3:
    printf("Vous avez pris l'escalope\n");
    break;
    case 4:
    printf("Vous avez pris la surprise du Chef. Vous etes un sacre aventurier
    dites donc !\n");
    break;
    }
    system("PAUSE");
    return 0;
    }
    J'ai fait ce que vous m'avait indiquer et j'obtient encore des erreurs lors du compilateur cette fois si avec code::blocks

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 157
    Billets dans le blog
    151
    Par défaut
    Vous êtes réfractaire à la haute technologie du Web ... et en plus, vous n'avez absolument pas lu mon message (enfin ... si ... la ligne sur Code::blocks ...)

    Je vous conseille de relire ... et vous verrai bien que j'ai parlé d'un problème / partie très bizarre dans votre code.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Par défaut
    LittleWhite lol.
    Il a pas lu pour les balises CODE, par contre il s'est pas foulé il a juste supprimé une des deux lignes "int main...."

    warezeux, je te conseille de faire un tour sur les cours de C (ou de C++ ca dépends de ce que tu veux apprendre) disponible sur ce site même, parce que le principale problème avec ton code, c'est la connaissance de base du langage ...

    Y'a pas quelque chose qui te choque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int main(int argc, char *argv[])
    {
    {
    Et puis la aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    }
    return choix;
    }
    {
    switch (menu)
    {
    case 1:
    Parmi tant d'autres ... Sincèrement reprend tout à zéro avec un bon tutoriel, sinon tu t'en sortiras pas.

    Une fonction à la structure suivante
    TYPE_DE_RETOUR nom_delafonction(arguments/ou varargs, avec type déclaré).
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int apprendre_c(int nbessai)
    {
     //code
     return(1);
    }
    et l'appel à cet fonction se fait comme (ex bete):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int nbessai = 0; 
    apprendre_c(nbessai);
    on conseille souvent de "prototyper" ses fontions (au début ou dans un .h)
    int apprendre_c(int);

    La fonction main est le point d'entrée du programme en question.
    elle prends argc et argv en argument (ou ac et av)
    int main(int ac, char **av)
    où : ac est une variable de type int (nombre entier) qui contient le nb d'arguments passés à l'appel de ton programme, et av un tableau à 2 dimensions (une chaine de caractere (char *) etant en quelque sorte un tableau de char/un pointeur sur char, voir les cours sur les pointeurs ...)
    si ton programme s'appelle par ex choixmenu.exe et que tu l'execute avec des arguments (choixmenu.exe /tri:moins_cher /qu:bon) ac vaudra 3, av[0] choixmenu.exe av[1] /tri:moins_cher av[2] /qu:bon ...

    dans la fonction main, commence l'execution de programme de manière linéaire. Donc toutes fonctions à executer viendra dedans, si main() s'arrete, le programme quitte et s'arrete. La valeur de retour de la fonction main retourne un code de sortie lors de la fin de l'execution du programme.

    Quoi te dire d'autres pour vraiment te donner envie d'aller faire un tour sur un bon tutorial (y'a des cours de C très bien fait sur ce site) ... Te guider un peu dans ton code? c'est parti, mais faudrait vraiment assimilé les bases avant d'essayer d'aller plus loin, et analyser tes erreurs/incompréhensions, rien ne sert d'avancer si on ne maitrise pas au moins un peu les acquis que l'on a.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    /* les includes ... il est d'usage/inutile d'include des .h dont on a pas besoin
    j'ajoute. En plus, tu as fait des includes C++, ton programme étant en C (#include <cstdlib>) est destiné au C++ par exemple*/
     
    /* stdio.h, pour printf & scanf, meme si cette dernière, je ne l'utilise jamais */
    #include <stdio.h> 
     
    //prototypage de la fonction affich_menu
    void affich_menu(void);
     
    // on commence par le main comme on avait dit, le point d'entrée du programme
     
    int main(int ac, char **av)
    {
      int  choix = 0; // pourquoi un long?
     
      while(choix < 1 || choix > 4) // j'aurai fait autrement...
      {
       affich_menu(); // pour te donner un exemple de fonction ...
       scanf("%ld", &choix);
      }
      switch (choix) 
     {
      case 1:
       printf("Vous avez pris le poulet\n");
       break;
      case 2: 
       printf("Vous avez pris les concombres\n");
       break;
      case 3:
       printf("Vous avez pris l'escalope\n");
       break;
      case 4:
       printf("Vous avez pris la surprise du Chef. Vous etes un sacre aventurier dites donc !\n");
       break;
     }
      return(0); 
    }
     
    void affich_menu()
    {
     printf("Menu :\n");
     printf("1 : Poulet de dinde aux escargots rotis a la sauce bearnaise\n");
     printf("2 : Concombres sucres a la sauce de myrtilles enrobee de  chocolat\n");
     printf("3 : Escalope de kangourou saignante et sa gelee aux fraises poivree\n");
     printf("4 : La surprise du Chef (j'en salive d'avance...)\n");
     printf("Votre choix ? ");
    }
    Voilà voilà... C'est perfectible, j'ai essayé de pas t'introduire de nouveaux concepts à assimiler que ceux qui était déjà présent dans ton code, mais vraiment si c'est pour ne pas aller te documenter (sur ce site, un livre de C quelque chose) ...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut
    Bonjour.

    Déjà merci pour les critiques sa permet d'avancer dans le bon sens. A titre indicatif j'ai 16 ans et je me suis renseigné avec les cours et tutoriels pour apprendre la programmation C : http://c.developpez.com/cours/

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Par défaut
    Je t'ai déjà posté le code fonctionnel je retire les commentaires ca a l'air de te gener dans ta lecture (bizarre), reporte toi à mon premier post si tu veux plus d'infos :
    Citation Envoyé par hh-cx Voir le message
    #include <stdio.h>

    void affich_menu(void);

    int main(int ac, char **av)
    {
    int choix = 0;

    while(choix < 1 || choix > 4) {
    affich_menu();
    scanf("%d", &choix);
    }
    switch (choix)
    {
    case 1:
    printf("Vous avez pris le poulet\n");
    break;
    case 2:
    printf("Vous avez pris les concombres\n");
    break;
    case 3:
    printf("Vous avez pris l'escalope\n");
    break;
    case 4:
    printf("Vous avez pris la surprise du Chef. Vous etes un sacre aventurier dites donc !\n");
    break;
    }
    return(0);
    }

    void affich_menu()
    {
    printf("Menu :\n");
    printf("1 : Poulet de dinde aux escargots rotis a la sauce bearnaise\n");
    printf("2 : Concombres sucres a la sauce de myrtilles enrobee de chocolat\n");
    printf("3 : Escalope de kangourou saignante et sa gelee aux fraises poivree\n");
    printf("4 : La surprise du Chef (j'en salive d'avance...)\n");
    printf("Votre choix ? ");
    }
    [/code]
    Après, une fois que tu as compris le principe, remplace scanf(), tu remarqueras si tu n'entre pas un nombre (des lettres à la place) que la boucle sera infini ... d'où le fait que je te répéte depuis le début de mes réponses qu'il faut éviter cette fonction.

  8. #8
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Ces trois lignes à la fin de ton programme n'ont pas de raison d'être, et sont situées en dehors d'une fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    system("PAUSE");
    return 0;
    }
    D'une manière générale en C/C++ mais c'est aussi valable pour beaucoup d'autres langage. les accolades ... doivent aller de paire.

    Quand tu utilise une accolade ouvrante "{" tu dois la fermer avec accolade fermante "}" plus loin dans le code.

    Une accolade ouvrante ou fermante seule provoquera une erreur de compilation.

    Cette remarque est aussi valable pour les parenthèses "()", crochets "[]", ...

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Par défaut
    tu as demandé un code fonctionnel en correction, on te l'a fourni pourquoi tu t'obstines à le changer à chaque fois pour mettre à chaque fois des instructions dans des endroits où ce n'est pas destiné pour, comme l'a expliqué jabbounet, et comme j'essaye de t'expliquer depuis le début, et je vais juste ajouter on ne déclare pas une fonction au milieu d'une autre, ce que tu as fait plusieurs fois sur tes tentatives de correction

    si c'est parce que j'ai oublié le system("pause") dans mon dernier post, place le avant le return 0 de la fonction main. et recompile. Et relis le code, regarde les commentaires, comment on appelle une fonction, comment on en déclare une, et même comme je te l'ai déjà préconisé, reprends à zéro un cours pour débuter en C.

  10. #10
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Personnellement je te conseille de chercher des livres/cours sur le net ou en librairie orienté débutant.

    une piste ici pour t'aider à démarrer
    http://alp.developpez.com/tutoriels/debuter-cpp/

    il faut bien comprendre une chose, un langage informatique tout comme une langue étrangère est un langage, ce langage dispose de sa grammaire et de son vocabulaire.

    Cependant à l'a différence d'un être humain un ordinateur est très bête et ne cherchera pas à interpréter ce que tu cherche à lui dire si tu ne lui parle pas correctement en respectant de façon suffisamment rigoureuse la langue dans laquelle tu lui parle.

    Autre différence notable avec un langue étrangère, cette fois qui facilite la vie du développeur, le vocabulaire et la grammaire d'un langage informatique est beaucoup plus simple qu'une langue étrangère car plus stricte et limité.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-Excel] Ne comprends pas le message d'erreur
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/05/2011, 16h49
  2. [Débutant] je ne comprends pas ce message d'erreur
    Par liogo dans le forum MATLAB
    Réponses: 4
    Dernier message: 06/04/2011, 14h37
  3. Je ne comprends pas le message d'erreur
    Par amine_en_france dans le forum Langage
    Réponses: 8
    Dernier message: 06/06/2007, 16h48
  4. je ne comprends pas mon message d'erreur
    Par LeNeutrino dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/01/2007, 09h44
  5. je ne comprends pas les message d'erreur g++
    Par emmesse dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 22/09/2006, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo