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 :

Calculatrice de base


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 16
    Par défaut Calculatrice de base
    Bonjour,

    En ce moment j'essaie de faire une petite calculatrice C++ en mode console.
    Voici comment s'articule mon code :

    Main.cpp
    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
     
    #include <iostream>
    #include "fcalcul.h"
     
    using namespace std;
     
     
    int main()
    {
        /*Calculatrice*/
     
        int argUn (0);
        int argDeux (0);
        int resultat1 (0);
        char operateur ('+');
     
        cout << "Bienvenue sur votre calculatrice basique" << endl ;
        cout << "Que voulez-vous calculer ? : " << endl ;
        cout << "Valeur 1 = " ;
        cin >> argUn;
        cout << "Operateur = " ;
        cin >> operateur;
        cout << "Valeur 2 = " ;
        cin >> argDeux;
     
        resultat1 = calcul (argUn, operateur, argDeux);
     
        cout << argUn << operateur << argDeux << " = " << resultat1 << endl ;
     
        return 0;
    }
    La Fonction fcalcul.cpp

    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
     
    #include <iostream>
    #include "fcalcul.h"
     
     
    using namespace std;
     
     
    /*Fonction Calcul*/
     
    int calcul (int arg1 , int arg2 , char operat)
    {
        int resultat2;
        switch (operat)
            {
            case '+' : return ('arg1 + arg2 = resultat2');
                break;
            case '-' : return ('arg1 - arg2 = resultat2');
                break;
            case '*' : return ('arg1 * arg2 = resultat2');
                break;
            case '/' : return ('arg1 / arg2 = resultat2');
                break;
            default : cout << "Vous n'avez utilisé aucun signe de calcul, veuillez recommencer !" ;
                break;
            }
     
        return resultat2;
     
    }
    fcalcul.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #ifndef FCALCUL_H_INCLUDED
    #define FCALCUL_H_INCLUDED
     
    int calcul(int arg1, int arg2, char operat);
     
    #endif // FCALCUL_H_INCLUDED
    Voici le problème que j'ai (image):

    Pièce jointe 204771


    Je pense que j'ai un problème au niveau de la variable char (opérateur).
    C'est comme s'il ne voyait pas que c'est un opérateur.

    Si vous avez une idée.

    Merci à vous pour votre aide.

    Cordialement,

    Alaz

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Quand je clique sur ta pièce jointe, j'obtiens ceci:
    Pièce jointe spécifié(e) non valide. Si vous suivez un lien valide, veuillez notifier l'administrateur

    Autre chose, ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return ('arg1 + arg2 = resultat2');
    Ça compile, ça?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par main.cpp
    calcul (argUn, operateur, argDeux);
    Citation Envoyé par fcalcul.cpp
    int calcul (int arg1 , int arg2 , char operat)


    Ca compile surement, mais ça défie toutes les lois de la logique, et j'ai aucune idée de ce que ça retourne, mais ça doit pas être beau
    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
    Membre confirmé

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 16
    Par défaut
    Ah mince alors je vais vous écrire la compilation. (Oui ça compile bien) .

    Dans mon terminal j'ai :

    Bienvenue sur votre calculatrice basique
    Que voulez-vous calculer ? :
    Valeur 1 = 2
    Operateur = +
    Valeur 2 = 2
    Vous n'avez utilisé aucun signe de calcul, veuillez recommencer !2+2 = 0

    Process returned 0 (0x0) execution time : 11.852 s
    Press ENTER to continue.



    EDIT 1 : Lol Bousk, j'ai déclarer 2 fois les variables, 1 fois dans main.cpp et une autre dans fcalcul.cpp. Je suppose donc que je doit corriger ma fonction fcalcul. Medinoc je vais essayer, Merci à tout les deux .

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par défaut
    Relit les messages de ton compilateur, notamment les warning, parce que return 'arg1 + arg2 = resultat2', c'est du n'importe quoi.

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    c'est surtout une constante multicaractère, de type int, dont la valeur est dépendante du compilateur.
    Ca n'a rien à voir avec l'évaluation.
    Ajoutons que resultat2 n'est pas initialisé

  7. #7
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Alazban Voir le message
    EDIT 1 : Lol Bousk, j'ai déclarer 2 fois les variables, 1 fois dans main.cpp et une autre dans fcalcul.cpp. Je suppose donc que je doit corriger ma fonction fcalcul. Medinoc je vais essayer, Merci à tout les deux .
    J'ai pas compris ton histoire sur les variables déclarées 2 fois. Mais si tu relisais un peu ton code, que j'ai mis en avant, tu ne passes pas les paramètres correctement surtout..
    Et tu as certainement des warnings qui t'en informent. Que tu tronques un int en char.
    Bon ça changera pas le résultat absurde que tu auras surement avec ta syntaxe par-dessus ça, mais ce serait un bon début.
    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.

  8. #8
    Membre confirmé

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 16
    Par défaut
    Bon ce matin j'ai relu le code et j'ai fais quelques modifications.

    main.cpp, j'ai modifié cette ligne resultat1 = fcalcul (argUn, argDeux, operateur); j'ai inversé argDeux et operateur et enfin la fonction récupère l'opérateur. Il doit y avoir un sens à respecter je pense car a chaque fois dans le code j'ai déclaré valeur1 valeur2 puis operateur sauf à cet endroit.
    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
     
    #include <iostream>
    #include "fcalcul.h"
     
    using namespace std;
     
     
    int main()
    {
        /*Calculatrice*/
     
        int argUn (0);
        int argDeux (0);
        int resultat1 (0);
        char operateur ('+');
     
        cout << "Bienvenue sur votre calculatrice basique" << endl ;
        cout << "Que voulez-vous calculer ? : " << endl ;
        cout << "Valeur 1 = " ;
        cin >> argUn;
        cout << "Operateur = " ;
        cin >> operateur;
        cout << "Valeur 2 = " ;
        cin >> argDeux;
     
        resultat1 = fcalcul (argUn, argDeux, operateur);
     
        cout << argUn << " " << operateur << " " << argDeux << " = " << resultat1 << endl ;
     
        return 0;
    }
    Autre chose, j'ai renommé mes variable correctement. ça fonctionne mieux.

    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
     
    #include <iostream>
    #include "fcalcul.h"
     
    using namespace std;
     
     
    /*Fonction Calcul*/
     
    int fcalcul (int argUn , int argDeux , char operateur)
    {
        int resultat1 (0);
     
        switch (operateur)
            {
            case '+' : return ('argUn + argDeux = resultat1');
                break;
            case '-' : return ('argUn - argDeux = resultat1');
                break;
            case '*' : return ('argUn * argDeux = resultat1');
                break;
            case '/' : return ('argUn / argDeux = resultat1');
                break;
            default : cout << "Vous n'avez utilisé aucun signe de calcul, veuillez recommencer !" ;
                break;
            }
     
        return resultat1;
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #ifndef FCALCUL_H_INCLUDED
    #define FCALCUL_H_INCLUDED
     
    int fcalcul(int argUn, int argDeux, char operateur);
     
     
    #endif // FCALCUL_H_INCLUDED
    Par contre j'ai toujours un problème, car maintenant il me fait le calcul mais me renvoie toujours le même résultat genre
    2+3=1987643693
    C'est surement un problème avec resultat1, un truc que je pige pas bien.... resultat1 dans main.cpp et resultat1 dans fcalcul.cpp ... comment se fait la communication entre les deux fichiers ? j'ai du la déclarer 2 fois . Bizarre j'ai le cerveau bloqué la xD.

    Bref je vais regarder dans les warnings , merci pour votre précieuse aide.
    J’espère avoir été clair.

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

Discussions similaires

  1. [Debutant sans bases] Calculatrice
    Par faeze dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/12/2009, 18h57
  2. [Windows]accès base de registre windows
    Par Greg01 dans le forum API standards et tierces
    Réponses: 27
    Dernier message: 05/06/2007, 15h14
  3. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39
  4. sauver une base
    Par phil_java dans le forum Administration
    Réponses: 3
    Dernier message: 07/03/2003, 17h08
  5. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16

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