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 :

Mini-calculatrice - division avec des nombres décimaux


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    animatrice
    Inscrit en
    Septembre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : animatrice

    Informations forums :
    Inscription : Septembre 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Mini-calculatrice - division avec des nombres décimaux
    bonjour, alors voila je débute en programmation, je n'y connais pratiquement rien je m'aide pour apprendre d'un site internet où il y a des cours.
    Là j'ai réussi à faire calculer une addition soustraction multiplication et division à mon ordi je me sers du langage C et j'utilise Code::Blocks.
    J'ai réussi à faire une mini calculatrice où on vous demande d'entrer le nombre 1 puis le nombre 2 et ensuite ça donne le résultat jusque là tout va bien mais quand j'attaque la division ça se corse, en fait j'arrive à avoir le résultat d'une division avec des nombres entiers et j'arrive à afficher le modulo aussi mais par contre j'aimerais par exemple que ça m'affiche des nombres décimaux du genre 5/2=2.5 et non 5/2=2 ou 5/2=1 mais je sais pas comment m'y prendre j'ai réussi à faire avec les nombres décimaux ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        double resultat = 0;
        resultat = 5.0 / 2.0; // si vous voulez que l'ordinateur affiche des nombres décimaux il faut mettre 5.0 et non 5
        printf("5 / 2 = %f", resultat);
        return 0;
    mais après j'ai essayé de le faire pour pouvoir calculer la division de notre choix comme pour l'addition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int resultat = 0, nombre1 = 0, nombre2 = 0;
        printf("entrez le nombre1 : ");
        scanf("%d", &nombre1);
        printf("entrez le nombre2 : ");
        scanf("%d", &nombre2);
     
        // on fait le calcul
     
        resultat = nombre1 + nombre2;
        // et on affiche l'addition a l’écran
     
        printf("%d + %d = %d\n", nombre1, nombre2, resultat);
    donc à la place de int resultat j'ai écris double resultat et à la place de %d j'ai mis %f et à la place de + j'ai mis / sauf que lorsque je fais l'opération dans la console le résultat m'affiche par exemple pour la division 5/2

    0.00000/000000.0= 0.999999
    moi j'aimerais que ça m'affiche 2.5
    alors déjà est-ce que c'est possible de faire ça ?
    je sais que pour vous tout ça va vous paraitre très simple et bête mais bon dans les cours que je suis il ne l'explique pas et ça m'intrigue
    voila j’espère que je suis assez claire dans mes explications lol et merci à tous ceux qui m'aideront

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Utilise la balise code signalée par un croisillon pour poster du code

    J'ai trouvé la bêtise... mais cela m'a pris 1 minute

    Donc en gros ton code est celui ci (parce qu'on n'est pas des magiciens non plus )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        double resultat = 0, nombre1 = 0, nombre2 = 0;
        printf("entrez le nombre1 : ");
        scanf("%f", &nombre1);
        printf("entrez le nombre2 : ");
        scanf("%f", &nombre2);
     
        // on fait le calcul
        resultat = nombre1 / nombre2;
     
        // et on affiche l'addition a l'ecran
        printf("%f + %f = %f\n", nombre1, nombre2, resultat);
    Le problème vient de la précision. Et je te préviens je ne prends pas de gants ()

    Donc un double c'est 8 octets et un float c'est 4 octets sur une plateforme 32bits.

    Plus de précisions: Fundamental types

    Mais ton format pour les fonctions scanf et printf n'est pas le bon.
    Étant donné que la fonction scanf ne peut pas mettre un double dans un float alors soit elle met zéro soit elle tronque la valeur.

    Plus de précisions: scanf printf


    > si vous voulez que l'ordinateur affiche des nombres decimaux il faut mettre 5.0 et non 5
    Perdu

    Et je dirais même plus en pur C il faut écrire float value = 5.0f; (<- Note le petit f)

  3. #3
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par foetus Voir le message
    Et je dirais même plus en pur C il faut écrire float value = 5.0f; (<- Note le petit f)
    SAns vouloir te vexer, le 5.0f n'est pas obligatoire, tu peux très bien écrire:
    Le int sera casté en float, je vois ou est le problème ^^.

    Concernant le calcul que tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat = nombre1 / nombre2;
    les types sont:
    Le problème vient de la, un int/int devient ...... un int, il ne peux donc pas contenir de valeur décimale. Il suffit juste de:
    1) déclarer les deux int en float/double.
    ou
    2) casté les int en float/double pour pouvoir gardé la partie décimale en fesant la division, ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat = ((double)nombre1)/nombre2;
    ce qui donnera:
    et double/int donne un double, donc on garde la partie décimale .
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


Discussions similaires

  1. bug (ou pas bug) avec des nombres décimaux
    Par cyberyan dans le forum Langage
    Réponses: 7
    Dernier message: 15/09/2008, 17h39
  2. Select sur des nombre décimaux de format 0.*
    Par CanardJM dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/08/2005, 16h04
  3. Problèmes avec des nombres... que faire ?
    Par sducos81 dans le forum C++
    Réponses: 6
    Dernier message: 21/07/2005, 13h46
  4. sum avec des nombres avec virgule
    Par Bruno2000 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/09/2004, 15h01
  5. Cripter avec des nombres premiers
    Par clovis dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/04/2004, 19h10

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