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 :

Calculer un pourcentage en C++ ?


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut Calculer un pourcentage en C++ ?
    Bonjour à tous !

    Je suis en seconde et nous travaillons actuellement sur les pourcentages. On a commencé en parallèle la programmation sur calculatrice TI. Le professeur a demandé de coder un programme sur la calculatrice qui permettrait de calculer un pourcentage avec différentes valeurs contenues dans des variables. Je n'aime pas du tout le TI-Basic donc je préfère coder en C++ et en faire une application, il sera content Mais je rencontre un problème, déjà, mon code (je débute seulement en C++) :

    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 <stdio.h>
    #include <stdlib.h>
     
    using namespace std;
     
    int prix;
    int tiord;
    int taux;
     
    int main (int argc, const char * argv[])
    {
        cout << "Bienvenue dans le calculateur de pourcentages !" << endl;
        cout << "Entrez le prix de l'article :" << endl;
        cin >> prix;
        cout << "Le prix est donc de " << prix << " euros !" << endl;
        cout << "Entrez le pourcentage d'inflation ou de désinflation :" << endl;
        cin >> tiord;
     
        if (tiord < 1)
        {
            cout << "Entrez une valeur supérieure à 0 !" << endl;
        }
     
        taux = tiord/100*prix;
     
        cout << "Le taux d'inflation ou de désinflation est de " << taux << " %" << endl;
     
        return 0;
    }
    Je n'arrive pas à calculer le pourcentage et à stocker le résultat dans une variable (ici la varibale "taux") et je ne sais pas d'où peut venir le problème Je l'ai codé en Python aussi, et pareil, le calcul ne se fait pas

    Si vous pouviez m'aider ça serait top !

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 454
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int prix;
    int tiord;
    int taux;
     
        taux = tiord/100*prix;
    C'est parce qu'il faut tenir compte du type de tes variables en particulier, et de tes données en général. En l'occurrence, elles sont toutes « entières » (int), ce qui signifie que la valeur qu'elles contiennent est toujours entière et que, donc, à chacune de tes opérations, la partie décimale est perdue. Et comme tu commences par faire une division par 100 alors que le dividende est par nature inférieur à cent, tu te retrouves avec un résultat nul qui se propage au reste de ton calcul.

    Sache que le C et C++ compte parmi les langages qui épousent au plus près le fonctionnement réel des ordinateurs. Ils ne font pas de calcul symbolique ni de résolution préalable d'équations. Il faut donc tenir compte des limitations de ta machine comme tu le ferais avec une calculatrice. Et ce, même si tu utilises des nombres à virgule flottante.

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut
    Oui je vois, en fait j'ai repris les calculs faits en cours et les ai mis dans mon code, je vais réfléchir ! Je me demandais, si je veux créer une variable qui peut retourner ou un int ou un double, je peux ? Par exemple ici je ne sais pas ce que l'utilisateur va rentrer comme valeur ni quel sera le résultat ?

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 454
    Par défaut
    Pas directement, non. Mais pour faire cela, tu peux utiliser une union. Cela dit, il faudra quand même spécifier explicitement le membre du type que tu veux utiliser le cas échéant.

    Le C++ est un langage merveilleux, mais il est fait, comme le C, pour être très proche de la machine. Il est également conçu pour privilégier l'exhaustivité à la simplicité. L'apprendre est donc un investissement.important.

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 965
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 965
    Par défaut
    Loe,
    Citation Envoyé par proinfo Voir le message
    Oui je vois, en fait j'ai repris les calculs faits en cours et les ai mis dans mon code, je vais réfléchir ! Je me demandais, si je veux créer une variable qui peut retourner ou un int ou un double, je peux ? Par exemple ici je ne sais pas ce que l'utilisateur va rentrer comme valeur ni quel sera le résultat ?
    Il est certain que ça aide.

  6. #6
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut
    Citation Envoyé par droggo Voir le message
    Loe,

    Il est certain que ça aide.


    Merci pour votre aide en tout cas, le problème est résolu, la syntaxe du calcul n'était pas bonne Le code qui fonctionne donne donc ceci :

    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
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
     
    using namespace std;
     
    int prix; 
    int tiord;
    double taux;
     
    int main (int argc, const char * argv[])
    {
    	cout << "Bienvenue dans le calculateur de pourcentages !" << endl << endl;
    	cout << "Entrez le prix de l'article :" << endl << endl;
    	cin >> prix;
    	cout << endl << endl;
    	cout << "Le prix de l'article est donc de " << prix << " euros !" << endl << endl;
    	cout << "Entrez le pourcentage d'inflation ou de désinflation :" << endl << endl;
    	cin >> tiord;
     
    		if (tiord < 1)
    		{
    			cout << "Entrez un nombre supérieur à 0 !" << endl << endl;
    		}
    		else
    		{
    			taux=(prix*tiord)/100;
    			cout << endl << endl;
    		}
     
    	cout << "Le pourcentage d'inflation ou de désinflation est donc de " << taux << " %." << endl << endl;
     
    	return 0;
    }
    Voilà, encore merci à vous !

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 454
    Par défaut
    C'est beaucoup mieux, mais pas encore parfait : Si tu rentres un produit à 50 € et que tu le fait à 25 %, son prix doit être ramené à 12,50 €.

    En l'état actuel des choses, tu vas obtenir un prix à 12,00 € tout rond, et perdre de l'argent. Et pourtant, ton résultat est bien de type double.

    Je te laisse deviner pourquoi.

  8. #8
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut
    Je pense que c'est parce que mes deux autres variables ne sont pas de type double et ne donnent donc pas de résultat de type double, malgré le fait que ma variable "taux" soit de type double

    Edit : J'ai testé et c'est bel et bien ça

  9. #9
    Membre expérimenté Avatar de Rewpparo
    Homme Profil pro
    Amateur
    Inscrit en
    Décembre 2005
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 170
    Par défaut
    Exact, mais changer ton 100 en 100.0 aurait eu le même résultat Il suffit d'un double dans le tas pour que le résultat soit en double.

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 454
    Par défaut
    Voire même un simple transtypage.

  11. #11
    Membre expérimenté Avatar de Rewpparo
    Homme Profil pro
    Amateur
    Inscrit en
    Décembre 2005
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 170
    Par défaut
    Chaque chose en son temps ^^

  12. #12
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut
    Citation Envoyé par Rewpparo Voir le message
    Exact, mais changer ton 100 en 100.0 aurait eu le même résultat Il suffit d'un double dans le tas pour que le résultat soit en double.
    C'est pas plus clean de déclarer un double dans le sens où le résultat sera de type double ? Et je voulais aussi vous demander, en fonction de si je veux calculer une augmentation ou une diminution d'une valeur en pourcentage, la formule de calcul change ? J'ai toujours eu du mal avec les %

  13. #13
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 454
    Par défaut
    Citation Envoyé par proinfo Voir le message
    C'est pas plus clean de déclarer un double dans le sens où le résultat sera de type double ?
    C'est-à-dire que « 100 » est en soi une expression qui peut être évaluée et qui a donc un type. Et justement, quel est ce type ?

    Et je voulais aussi vous demander, en fonction de si je veux calculer une augmentation ou une diminution d'une valeur en pourcentage, la formule de calcul change ? J'ai toujours eu du mal avec les %
    Ça, c'est une question de raisonnement, pas de langage C. Pose l'opération sur papier et regarde le résultat. Tires-en les conclusions qui s'imposent et transposes-les ensuite dans ton programme.

Discussions similaires

  1. Calcul de pourcentages
    Par Lypertrophie dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 30/06/2006, 11h25
  2. Reqête avec un calcul de pourcentage
    Par jean-pierre96 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2006, 13h00
  3. Réponses: 1
    Dernier message: 10/01/2006, 20h35
  4. calcul de pourcentage
    Par PAUL87 dans le forum Access
    Réponses: 12
    Dernier message: 20/09/2005, 19h50
  5. Calcul de pourcentage
    Par megazen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/11/2003, 16h43

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