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 n'arrive pas a faire appel a ma fonction


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Je n'arrive pas a faire appel a ma fonction
    Bonjour,

    J'ai un gros soucis d'appel à la fonction.. Vous comprendrez surement mieux en visualisant mon code (approximatif)

    En gros, je créer une fonction avec un message d'accueil, et une autre fonction pour mon jeu de math(1ier essai)

    Et dans mon main(), je tente de lancer ma fonction d'acceuil, ensuite de revenir au main et suite a la question "voulez-vous y participer - Y or N

    appeler ou non la fonction avec les exercices.. Mais il ne fait aucun appel de fonction.. je coince !


    Voici le code

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
    #include <iostream>
     
    using namespace std;
     
     
    int acceuil()
    {
     
     
            cout << "\n\tBONJOUR" << endl;
     
            cout << "\nJe me presente, je me nomme Beni, et je suis la conscience de ton ordi !" <<endl;
            cout << "J'aimerais beaucoup te proposer un petit exercice " << endl;
    }
     
    int exercice1()
    {
        cout << "\nSUPER, nous commencons des maintenant !";
                      cout << "Nous allons commencer assez simplement ! ";
     
                       cout << "Exercice n 1 : Les additions \n" << endl;
     
     
                       cout << "Il te faut resoudre ce probleme:  7 + 5 = ";
                       int reponse1(12);
     
                        cin >> reponse1;
     
     
                         if (reponse1 != 12)
                         {
     
                             cout << "\nEt non, tu t'es trompe, les math ne sont pas ton fort !! ton score est : 0/10" << endl;
                             cout << "\nMais comme je suis gentil, je vais te laisser recommencer.. et applique toi bien cette fois-ci" << endl;
                             cout << "                          " << endl;
     
                             int exercice1();
     
     
                         }
     
                            else {
     
                                cout << "\nBRAVO, tu sais resoudre un probleme de 1iere primaire ;) ton score est : 1/10" << endl;
                                cout << "\nPassons a la seconde question ! " << endl;
                                cout << "\nIl te faut resoudre ce probleme:  46 + 83 = ";
     
     
                                int reponse2(129);
     
                                cin >> reponse2;
     
     
                                    if (reponse2 != 129)
                                    {
     
                                        cout << "\nEt non, tu as loupe la 2ieme question !! ton score est : 1/10" << endl;
                                        cout << "\nMais comme je suis gentil, je vais te laisser recommencer.. et applique toi bien cette fois-ci" << endl;
     
                                        int exercice1();
     
                                    }
     
                                    else {
     
                                        cout << "\nBRAVO, Tu as appris tes lecon ! ;) ton score est : 2/10 " << endl;
                                        cout << "\nPassons a la 3ieme  question ! " << endl;
                                        cout << "\nIl te faut resoudre ce probleme:  431 + 569 = ";
     
                                        int reponse3(1000);
     
                                        cin >> reponse3;
                                        cout << "                          " << endl;
     
                                        if (reponse3 != 1000)
                                        {
     
                                            cout << "\nDommage, tu viens de te plante sur la troisieme question ! Ton score est de 2/10" << endl;
                                            cout << "\nMais comme je suis gentil, je vais te laisser recommencer.. et applique toi bien cette fois-ci" << endl;
                                            cout << "                          " << endl;
                                            int exercice1();
     
     
                                        }
     
                                            else {
                                                cout << "                          " << endl;
                                                cout << "\nBRAVO, mais tu es un pro des math ma parole :0 ton score est : 3/10" << endl;
     
                                                cout << "\nPassons a la 4ieme question ! \n" << endl;
     
                                                return 0;
                                    }
     
                            }
     
     
     
     
                            }
    }
     
    int main()
    {
     
            int acceuil();
     
            string accord("a");
            cout << "Veux-tu y participer ..? Y or N ? ";
            cin >> accord;
     
     
                if (accord == "y" || accord == "Y")
     
                {
     
                     int exercice1();
                }
     
     
                else if (accord != "y" || accord != "Y" || accord != "n" || accord != "N" )
     
                {
                    cout << "Choisisez entre Y (yes) ou N (no)" << endl;
     
     
                }
     
     
     
      return 0;
     
    }

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    @Beniboy2012, vous êtes tombé sur l'une des peaux de banane les plus classiques du C et du C++.

    Ligne 107, vous définissez une variable locale de type "fonction" qui prend aucun paramètre et qui retourne un int et qui s'appelle (la variable locale) "accueil".
    "int acceuil();" et "int acceuil(0);" donnent les choses complètement différentes car la seconde formulation déclare une variable locale de type int et initialisé avec 0.
    C'est pour éviter ce genre de piège que l'on conseille, depuis le standard C++11, d’initialiser les variables avec des "{}" et non plus des "()".

    idem ligne 118.

    Pour faire des appels de fonction et non déclarer des variables locales, vous ne devez pas donner les types de retour de la fonction, tout simplement.

    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
    ...
     int main()
    {
            acceuil();
     
            string accord("a");
            cout << "Veux-tu y participer ..? Y or N ? ";
            cin >> accord;
     
            if (accord == "y" || accord == "Y")
            {
                    exercice1();
            }
            else if (accord != "y" || accord != "Y" || accord != "n" || accord != "N" )
            {
                    cout << "Choisisez entre Y (yes) ou N (no)" << endl;
            }
     
            return 0;
    }

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    En dehors de ça, beaucoup d'erreurs
    - à quoi bon déclarer que ta fonction retourne un int si ce n'est pas le cas et est inutile ? void est fait pour ça
    - l'indentation est aléatoire et rend le tout illisible
    - appel récursif de exercice1 en cas d'erreur c'est très bof
    - quand tu voudras rajouter une question tu vas bien galérer avec cette architecture
    - attention à vérifier la saisie dans cin https://cpp.developpez.com/faq/cpp/?...isies-avec-cin
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Re
    Citation Envoyé par Bousk Voir le message
    En dehors de ça, beaucoup d'erreurs
    - à quoi bon déclarer que ta fonction retourne un int si ce n'est pas le cas et est inutile ? void est fait pour ça
    - l'indentation est aléatoire et rend le tout illisible
    - appel récursif de exercice1 en cas d'erreur c'est très bof
    - quand tu voudras rajouter une question tu vas bien galérer avec cette architecture
    - attention à vérifier la saisie dans cin https://cpp.developpez.com/faq/cpp/?...isies-avec-cin
    Et bien il faut dire que je débute hein

    Ce ne sont que des essai

    Comment verrais tu l'indentation, l'architecture ??

    Pourrais-tu vite fait me le modifier à ta sauce que j'ai une idée de ce que tu tente de m'expliquer

    Merci

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Pour l'architecture, je pense que le principal problème est de séparer la manière de poser la question de la question elle-même. J'imagine que ce produit va évoluer au cours du temps, et avoir plusieurs question à terme. Comment s'assurer que l'expérience utilisateur soit identique d'une question à l'autre si chaque question est codée en dur dans le code source ? Et ajouter une question est actuellement très fastidieux. Il vaudrait mieux qu'elles soient dans un fichier de configuration, ou si tu n'as pas encore étudié cette partie, peut-être dans le code, mais de manière centralisée et groupée, pas au milieu du code de traitement.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    auto questions = std::vector<question> {
        {"Il te faut resoudre ce probleme:  7 + 5 = ", 7+5},
        {"Il te faut resoudre ce probleme:  46 + 83 = ", 46+83}
    };
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Beniboy2012 Voir le message
    Comment verrais tu l'indentation [...] ??
    Pour ce qui est de l'indentation (on pourrait presque parler de mise en forme du code), je verrais bien quelque chose comme ça (mais presque tout le monde sera d'accord avec moi je pense ) :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    #include <iostream>
     
    using namespace std;
     
    int acceuil()
    {
        cout << "\n\tBONJOUR" << endl;
        cout << "\nJe me presente, je me nomme Beni, et je suis la conscience de ton ordi !" << endl;
        cout << "J'aimerais beaucoup te proposer un petit exercice " << endl;
    }
     
    int exercice1()
    {
        cout << "\nSUPER, nous commencons des maintenant !";
        cout << "Nous allons commencer assez simplement ! ";
     
        cout << "Exercice n 1 : Les additions \n" << endl;
     
        cout << "Il te faut resoudre ce probleme:  7 + 5 = ";
        int reponse1(12);
        cin >> reponse1;
     
        if (reponse1 != 12)
        {
            cout << "\nEt non, tu t'es trompe, les math ne sont pas ton fort !! ton score est : 0/10" << endl;
            cout << "\nMais comme je suis gentil, je vais te laisser recommencer.. et applique toi bien cette fois-ci" << endl;
            cout << "                          " << endl;
     
            int exercice1();
        }
        else
        {
            cout << "\nBRAVO, tu sais resoudre un probleme de 1iere primaire ;) ton score est : 1/10" << endl;
            cout << "\nPassons a la seconde question ! " << endl;
            cout << "\nIl te faut resoudre ce probleme:  46 + 83 = ";
     
            int reponse2(129);
            cin >> reponse2;
            if (reponse2 != 129)
            {
                cout << "\nEt non, tu as loupe la 2ieme question !! ton score est : 1/10" << endl;
                cout << "\nMais comme je suis gentil, je vais te laisser recommencer.. et applique toi bien cette fois-ci" << endl;
     
                int exercice1();
            }
            else
            {
                cout << "\nBRAVO, Tu as appris tes lecon ! ;) ton score est : 2/10 " << endl;
                cout << "\nPassons a la 3ieme  question ! " << endl;
                cout << "\nIl te faut resoudre ce probleme:  431 + 569 = ";
     
                int reponse3(1000);
     
                cin >> reponse3;
                cout << "                          " << endl;
     
                if (reponse3 != 1000)
                {
     
                    cout << "\nDommage, tu viens de te plante sur la troisieme question ! Ton score est de 2/10" << endl;
                    cout << "\nMais comme je suis gentil, je vais te laisser recommencer.. et applique toi bien cette fois-ci" << endl;
                    cout << "                          " << endl;
                    int exercice1();
     
                }
                else
                {
                    cout << "                          " << endl;
                    cout << "\nBRAVO, mais tu es un pro des math ma parole :0 ton score est : 3/10" << endl;
                    cout << "\nPassons a la 4ieme question ! \n" << endl;
     
                    return 0;
                }
            }
        }
    }
     
    int main()
    {
        int acceuil();
     
        string accord("a");
        cout << "Veux-tu y participer ..? Y or N ? ";
        cin >> accord;
     
        if (accord == "y" || accord == "Y")
        {
            int exercice1();
        }
     
        else if (accord != "y" || accord != "Y" || accord != "n" || accord != "N")
        {
            cout << "Choisisez entre Y (yes) ou N (no)" << endl;
        }
     
        return 0;
    }

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Merci :-)
    Citation Envoyé par JolyLoic Voir le message
    Pour l'architecture, je pense que le principal problème est de séparer la manière de poser la question de la question elle-même. J'imagine que ce produit va évoluer au cours du temps, et avoir plusieurs question à terme. Comment s'assurer que l'expérience utilisateur soit identique d'une question à l'autre si chaque question est codée en dur dans le code source ? Et ajouter une question est actuellement très fastidieux. Il vaudrait mieux qu'elles soient dans un fichier de configuration, ou si tu n'as pas encore étudié cette partie, peut-être dans le code, mais de manière centralisée et groupée, pas au milieu du code de traitement.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    auto questions = std::vector<question> {
        {"Il te faut resoudre ce probleme:  7 + 5 = ", 7+5},
        {"Il te faut resoudre ce probleme:  46 + 83 = ", 46+83}
    };
    Super, un tout grand merci, je n'en étais pas encore là mais ça m'avance
    Et si m'aintenant j'ai envie de creer des calcul aléatoirement (sans devoir les pré-coder) donc qu'il me trouve lui même des variables aléatoirement pour variable a ainsi que pour variable b et également, l'opération si besoin ..?
    Comment je pourrais m'y prendre..??

  8. #8
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par Beniboy2012 Voir le message
    Super, un tout grand merci, je n'en étais pas encore là mais ça m'avance
    Et si m'aintenant j'ai envie de creer des calcul aléatoirement (sans devoir les pré-coder) donc qu'il me trouve lui même des variables aléatoirement pour variable a ainsi que pour variable b et également, l'opération si besoin ..?
    Comment je pourrais m'y prendre..??
    Oulah... Chaque chose en son temps!!!

    tu as déjà du travail, rien que pour arriver au point de pouvoir utiliser la solution proposée par JolyLoic, car, je ne sais pas si tu as essayé le bout de code qu'il propose, mais, tel quel, tu vas te faire jeter par le compilateur au motif que "'question' est inconnu dans ce contexte".

    Alors, ne commence pas à -- en plus -- vouloir générer les choses de manière aléatoire, autrement, tu vas t'y perdre en moins de temps qu'il ne faut pour dire "quidditch" .

    D'autant plus que, une fois que tu auras atteint le stade proposé par JolyLoic, tu te rendras compte que toutes les phrases commencent de la même manière à savoir "Il te faut resoudre ce probleme:", et qu'il n'y a donc en définitive plus qu'à... afficher l'opération que tu souhaites faire exécuter.

    Et ce n'est qu'une fois que tu auras pris cela en compte qu'il deviendra finalement facile de faire générer n'importe quelle opération simple, voire, pourquoi pas, n'importe quelle équation de base comme x-4 = 10 ==> x=???.

    Mais bon, ne mettons pas la charrue avant les boeufs, s'il te plait
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. [C#] SQL - je n'arrives pas a faire ma requete
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 5
    Dernier message: 06/07/2006, 14h43
  2. Je n'arrive pas à faire des boucles dans un répertoire
    Par padodanle51 dans le forum Linux
    Réponses: 4
    Dernier message: 04/05/2006, 18h04
  3. Réponses: 6
    Dernier message: 18/04/2006, 13h11
  4. [réplication]N'arrive pas à le faire marcher!!!!
    Par mohamed dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/03/2006, 14h29

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