Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les fonctions en c++

Effectuer deux nombres avec +-*/^%

    22 mai 2023 à 7:33:48

    Bonjour Cmt effectuer deux nombres avec l’addition, la soustraction, la multiplication, la division, la puissance et le modulo en fonction 

    voila mon travail mais y’a des erreurs lignes 4 et ligne 30

    je Vous avez envoyé des captures pour comprendre mais vous dites que c’est illisible alors je n’ai pas de choix : 

    #include <iostream>

    using namespace std;

    int "f_addit, f_sous, f_mult, f_div, f_puis, f_mod" (int a, int b){

        return a+b, a-b, a*b, a/b, a^b, a%b;

    }

    int main()

    {

        int a,b;

        char op;

        cout<<"Saisissez le premier nombre : "<<endl;

        cin>>a,

        cout << "Saisissez le deuxieme nombre :" << endl;

        cin>>b;

        switch(op){

        case'+':

        cout<<"La somme est : "<<a+b;

        break;

        case'-':

        cout<<"Le reste est : "<<a-b;

        break;

        case'*':

        cout<<"Le produit est : "<<a*b;

        break;

        case'/':

        cout<<"Le quotient est : "<<a/b;

        case'%':

        break;

        case'^':

        cout<<"La produit est : "<<a^b;

        break;

        cout<<"Le reste est : "<<a%b;

        break;

        }

        return 0;

    }

    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2023 à 10:14:02

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

      Merci de modifier votre message d'origine en fonction.

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2023 à 10:14:47

        Bonjour,

        Voilà une syntaxe bien originale pour tenter de définir plusieurs fonctions d'un coup!

        int "f_addit, f_sous, f_mult, f_div, f_puis, f_mod" (int a, int b){
            return a+b, a-b, a*b, a/b, a^b, a%b;
        }

        De même, inventer la puissance d'un nombre avec l'opérateur ^, ne semble pas à l'ordre du jour. D'autant que l'opérateur ^ sert déjà à quelque chose d'autre (c'est l'opérateur de ou-exclusif bits à bits). Pour la puissance, il faut utiliser la fonction std::pow(a,b).

        Peut-être que définir vraiment ces fonctions, et les appeler effectivement serait bien plus cohérent.

        • Partager sur Facebook
        • Partager sur Twitter

        En recherche d'emploi.

          22 mai 2023 à 13:01:37

          Où je vais placé le std::pow(a,b) dans le code que je vous ai envoyé ?
          • Partager sur Facebook
          • Partager sur Twitter
            22 mai 2023 à 13:59:22

            On ne peut pas définir plusieurs fonctions d'un coup comme tu essayes de le faire

            Et on ne met pas le nom des fonctions entre guillemets

            int addition(int a, int b)
            {
                return a + b;
            }

            Voilà comment corectement définir et implémenter UNE fonction

            Il faut répéter ces lignes, en adaptant évidemment le nom de la fonction et l'implémentation entre les crochets, pour chaque fonction que tu veux créer

            Ensuite dans ton switch, si tu veux tester tes fonctions il faut les appeler et non pas réécrire la formule avec des + et des - sinon tes fonctions ne servent à rien 

            Par exemple :

            switch(op){
            
                case'+':
                std::cout<<"La somme est : "<< addition(a, b) << std::endl;
                break;
            }

            Je te laisse te baser sur le bout de code que je t'ai donné pour codé les autres fonctions et les appeler correctement dans ton switch



            • Partager sur Facebook
            • Partager sur Twitter
              22 mai 2023 à 14:03:47

              Avant cela, tu devrais faire fonctionner ton code avec les opérateurs de base (+, -, *, /).

              Et modifier ton post d'origine comme te l'as demander AbcAbc6.

              • Partager sur Facebook
              • Partager sur Twitter
              ...
                22 mai 2023 à 15:04:59

                Et tu as oublié de saisir l'opération désirée dans op.

                Le modulo n'est pas affiché au bon endroit.

                edit: c'est le case '%': qui n'est pas au bon endroit.

                -
                Edité par PierrotLeFou 22 mai 2023 à 15:15:37

                • Partager sur Facebook
                • Partager sur Twitter

                Le Tout est souvent plus grand que la somme de ses parties.

                  22 mai 2023 à 20:54:37

                  Ah merci bcp ! ☺️ 
                  une dernière chose où je vais placer la boucle while pour que mon calcul puisse continuer  avec chaque opérations ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 mai 2023 à 1:20:19

                    Que veux-tu dire par "continuer avec chaque opération"?
                    Est-ce que tu dois tester chaque opération une seule fois? Ou bien recommencer à volonté?
                    Quoi qu'il en soit, la boucle while (ou autre) doit englober les saisies et le switch.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Le Tout est souvent plus grand que la somme de ses parties.

                      23 mai 2023 à 13:15:40

                      Genre si j’effectue un calcul avec l’addition que je continue avec la soustraction, la multiplication, la division, la puissance et le modulo C’est fatiguant d’effectuer un calcul avec l’addition reprendre encore avec les autres opérateurs
                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 mai 2023 à 18:13:22

                        Pour te faire comprendre, tu devrais montrer un exemple du dialogue que tu imagines avec l'utilisateur.

                        Voir comment on le fait grâce à du code C++ ça vient après. Et comme c'est fatigant, il faut être sûr de ce qu'on veut pour ne pas avoir à le refaire.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 mai 2023 à 18:14:08

                          Si tu trouves fatiguant de tester un programme, tu auras de la difficulté à progresser dans le domaine de la programmation.
                          Par contre, c'est parfois une bonne chose que d'être fainéant quand on programme. Mais il faut l'être de la bonne façon. :)
                          Tu pourrais mettre tes opérateurs dans un std::array ou std::vector de char
                          Tu pourrais choisir tes nombres de  telle sorte que tu puisses tester toutes les opérations.
                          Tu fais une boucle for sur l'indice dans un de ces tableaux et tu testes toutes les opérations à tour de rôle.
                          Cette boucle n'aurait besoin que d'inclure le switch.
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Le Tout est souvent plus grand que la somme de ses parties.

                            23 mai 2023 à 18:58:25

                            Lol 😂 pour ce travail dont je vous parle je suis fainéant dans le bon sens peut-être la façon dont je vous explique vous n’arrivez pas à comprendre je vais vous envoyer le code dès que je finirai mon repas vous allez comprendre que ce que je vous demander ce n’était pas question d’être fainéante bah peut être fainéante mais dans le bon sens comme vous le dites 😂🤣🤣🤣
                            • Partager sur Facebook
                            • Partager sur Twitter
                              23 mai 2023 à 20:31:55

                              Pas sur qu'on comprenne avec le code, il faut aussi décrire précisément ce que tu souhaites faire.

                              PS : Penses à utiliser le bouton code '</>' du forum pour poster ton code.



                              • Partager sur Facebook
                              • Partager sur Twitter
                              ...
                                24 mai 2023 à 3:07:42

                                Je ne donne pas un bon exemple, mais moi je n'ai pas le choix.
                                Il n'existe pas de symbole pour la fonction "puissance". J'ai tout de même utilisé le symbole '^' pour le switch.
                                J'aurais pu être assez fainéant pour faire générer presque toutes les fonctions avec un très petit programme dans un autre langage.
                                Même chose pour les "case" du switch:
                                Je ne vérifie pas que le diviseur est différent de 0 ou que la puissance puisse donner un entier trop grand.
                                -
                                #include <iostream>
                                #include <string>
                                #include <cmath>
                                // Les fonctions sont si simples que je les ai écrites en une ligne.
                                int f_add(int a, int b) { return a + b; }
                                int f_sub(int a, int b) { return a - b; }
                                int f_mul(int a, int b) { return a * b; }
                                int f_div(int a, int b) { return a / b; }
                                int f_mod(int a, int b) { return a % b; }
                                int f_pow(int a, int b) { return std::pow(a, b); }
                                 
                                int main(void) {
                                    int a, b;
                                    int r;   // Résultats.
                                    std::string operateurs { "+-*/%^" };
                                    std::cout << "Entrez le premier nombre ";
                                    std::cin >> a;
                                    std::cout << "Entrez le second nombre ";
                                    std::cin >> b;
                                    for(auto op: operateurs) {
                                        switch(op) {
                                            // Les case sont également en une ligne.
                                            case '+': r = f_add(a, b); break;
                                            case '-': r = f_sub(a, b); break;
                                            case '*': r = f_mul(a, b); break;
                                            case '/': r = f_div(a, b); break;
                                            case '%': r = f_mod(a, b); break;
                                            case '^': r = f_pow(a, b); break;
                                        }
                                        std::cout << a << op << b << "=" << r << std::endl;
                                    }
                                    return 0;
                                }

                                -

                                J'ai inclus ce petit programme de 3 lignes qui en génère 12. Je n'ai qu'à modifier manuellement la fonction f_pow et le tour est joué!

                                C'est ça la vraie paresse ...

                                t="add + sub - mul * div / mod % pow ^".split()
                                for i in range(0, len(t), 2): print(f"int f_{t[i]}(int a, int b)", "{ return a", t[i+1], "b; }")
                                for i in range(0, len(t), 2): print(f"{' ':12}case '{t[i+1]}': r = f_{t[i]}(a, b); break;")

                                -
                                Edité par PierrotLeFou 24 mai 2023 à 3:43:26

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Le Tout est souvent plus grand que la somme de ses parties.

                                  24 mai 2023 à 11:15:04

                                  RebeccaMawoke a écrit:

                                   je vais vous envoyer le code dès que je finirai mon repas

                                  Bon appétit alors.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    25 mai 2023 à 15:24:58

                                    Merci mais j’avais déjà fini mon repas . Merci aussi pour le code mais j’avais déjà fini mon Tp, mon travail se trouve dans la machine mais ce dernier temps ma connexion est difficile c’est pour cela que je ne vous ai Pas envoyé le code .
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Les fonctions en c++

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown