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 :

Problème résultat calcul type ((a * b) + c)


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    ecole de commerce
    Inscrit en
    Mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Suisse

    Informations professionnelles :
    Activité : ecole de commerce

    Informations forums :
    Inscription : Mai 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème résultat calcul type ((a * b) + c)
    Bonjour à tous,

    démarrant depuis peux la programmation j'apprends en ligne.

    Lors d'un exercice me proposant de créer mon propre calcul, je remplie tout correctement, aucune erreur affiché le programme se lance. Je rentre la donnée pour a, pour b puis pour c et appuie sur "enter".
    Le calcul étant ((a * b) + c)

    La première partie se déroule très bien, le a * b est ok, par contre lors de l'addition au résultat précédent, il m'affiche le resultat plus le nombre "c" choisis.

    Exemple : ((3 * 6) + 2) et il m'affiche 220 au lieu de 20.
    Exemple 2 : ((4 * 2) + 6) = 612 au lieu de 12.

    En gros le nombre c est à chaque fois collé avant le resultat. Je ne comprends pas mes fautes.

    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
    #include <iostream> // Inclut la bibliothèque iostream (afficahge de texte)
    #include <string>
     
    using namespace std; // Indique quel espace de noms on va utiliser
     
    /*
    Fonction principale "main"
    Tous les programmes commencent par la fonction main
    */
     
    int main()
    {
        int a(0), b(0), c(0);
     
        cout << "Bienvenue dans la calculette !" << endl;
     
        cout << "Donnez une premiere valeur : ";
        cin >> a;
     
        cout << "Multiplier par : ";
        cin >> b;
     
        cout << "Plus : ";
        cin >> c;
     
        double const resultat((a * b) + c);
     
     
        cout << a << " * " << b << " + " << c << resultat << endl;
     
    return 0; // Termine la fonction main et donc le programme
    }

    Est-ce que quelqu'un aurait la bonté de m'aider et m'expliquer mes erreurs.

    Merci d'avance

  2. #2
    Membre régulier Avatar de Maghin
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Points : 112
    Points
    112
    Par défaut
    Bonsoir,

    Je te souhaite une bonne chance dans ton apprentissage, le C/C++ c'est fabuleux !

    Ton code est très propre mais il nous aurait été plus agréable que tu le mettes entre les balises [ code ] et [ /code ] pour sa mise en forme et sa colorisation.

    Ton erreur se trouve là ou tu effectues ton calcul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double const resultat((a * b) + c);
    Je ne sais pas vraiment ce que le compilateur comprend dans cette situation (j'en suis curieux si quelqu'un saurait dire).

    Tu devrais simplement utiliser le signe = pour affecter le résultat de ton calcul à la variable que tu déclares.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Citation Envoyé par Maghin Voir le message
    le C/C++ c'est fabuleux !
    Ah non ! C'est le C++ qui est fabuleux. Le « C/C++ », mélange des deux langages, est une abomination !

    Citation Envoyé par Maghin Voir le message
    Ton erreur se trouve là ou tu effectues ton calcul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double const resultat((a * b) + c);
    Je ne sais pas vraiment ce que le compilateur comprend dans cette situation (j'en suis curieux si quelqu'un saurait dire).
    Non l'« erreur » n'est pas là, il s'agit d'une simple construction d'un double tel qu'on a classiquement Type obj(/*paramètres du constructeur*/); (accolades depuis C++11).

    Le soucis se situe au niveau de l'affichage, et de son interprétation, en particulier sur la partie … << c << resultat << …. En effet aucun espace n'est inséré entre la valeur de c et celle de resultat, ce qui fait que :
    Exemple : ((3 * 6) + 2) : a=3, b=6, c=2, resultat=20 affiche « 3 * 6 + 220 »
    Exemple 2 : ((4 * 2) + 6) : a=4, b=2, c=6, resultat=12 (plutôt 14 en fait) affiche « 4 * 2 + 614 »
    Ajoute simplement un séparateur (espace, signe égal ou autre) afin de pouvoir différencier les deux.
    Dernière modification par Invité ; 27/01/2019 à 19h39.

  4. #4
    Membre régulier Avatar de Maghin
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Ah non ! C'est le C++ qui est fabuleux. Le « C/C++ », mélange des deux langages, est une abomination !
    Absolument ! Mais c'est souvent ce qu'on voit écris sur les bouquins

    Citation Envoyé par Winjerome Voir le message
    Non l'« erreur » n'est pas là, il s'agit d'une simple construction d'un double tel qu'on a classiquement Type obj(/*paramètres du constructeur*/); (accolades depuis C++11).
    Ah oui bien vu, la description de la sortie obtenue n'était pas précise, je n'ai pas assez prété attention
    Néanmoins je n'aime pas du tout cette façon de faire, on se trompe ensuite à laisser trainer des int var(); que le compilateur interprète comme une pré-declaration de fonction.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    ecole de commerce
    Inscrit en
    Mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Suisse

    Informations professionnelles :
    Activité : ecole de commerce

    Informations forums :
    Inscription : Mai 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut merci
    Merci à vous deux effectivement je n'avais pas signaler de " = " ou quelque chose de la sorte à la fin.

    Désolé du brouillon que vous devez subir mais me lançant dans le C++ je galère très légèrement pour le moment comme vous pouvez vous en doutez malheureusement x)

    Merci encore à vous deux et si je peux corriger d'autre chose dans mon code n'hésiter pas. (avec explicatif compréhensible pour débutant si possible )

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

Discussions similaires

  1. [PowerShell] problème de calcul sur les objets de type datetime
    Par philpus256 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 21/04/2017, 17h09
  2. Problème de calcul sur champs : types incompatibles
    Par netsoft dans le forum Bases de données
    Réponses: 13
    Dernier message: 21/12/2016, 23h01
  3. [AC-2010] Problème de calcul dans vba sur résultat requête
    Par Didou95 dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/04/2016, 15h53
  4. Problème de calcul : Résultat incorrect.
    Par Nico-xs dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/10/2006, 13h10
  5. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48

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