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 :

[Débutant] '/' : Division entiere ?


Sujet :

C++

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 40
    Par défaut [Débutant] '/' : Division entiere ?
    Bonjour,
    j'ai créer un programme qui effectue une opération. le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <iostream>
    using namespace std ;
     
    int main ()
    {
     
        float res ;
     
     
        res = 7*2/4;   
        cout << res << endl ;   //affiche "3"
        system("PAUSE");
    }
    Chez moi, Maple et chez ma calculette "7*2/4" ca fait 3.5 or le programme affiche 3 je voulait savoir si c'etait normal que le resultat soit arrondi, si oui, comment l'afficher sans qu'il soit arrondi a l'unitée inférieure.

    "7/4" affiche 1.

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par défaut
    Bonjour,

    En c++ la division / est la division entière. C'est la partie entière de la division.
    Pour remedier à celà, écrit 7.*2./4.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par défaut
    Pour compléter un peu, fait toujours attention dans tes programmes que le symboles / efectue la division entière.
    Donc si tu veux avoir une division a/b "normale", déclare a et b comme des "double" par exemple.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 40
    Par défaut
    Ok merci, mais quand je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <iostream>
    using namespace std ;
     
    int main ()
    {
     
        float res ;
     
     
        res = 7./4.;   
        cout << res << endl ;   //affiche "1.75"
        system("PAUSE");
    }
    Cela m'affiche 1.75 au lieu de 1.66666666666666666666666... tout a l'heure je sais plus comment j'ai reussi à afficher trés exactement 1.6667 (arrondi a 10^-4 près c pas génial mais ca m'avançait deja plus)
    Quelqu'un saurais me dire comment j'avais fait ça?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 40
    Par défaut
    Désolé j'avais pas lu.
    Mais si je déclare a et b comme des doubles je peut pas faire "a % b".
    Tout a l'heure j'ai essayer de le faire mais je me suis fait engeuler par le compilateur comme quoi il faut que a et b soit des entiers.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par défaut
    7 divisé par 4 ça fait de toute façon 1,75 donc je vois pas le problème

    L'operateur % fonctionne uniquement avec des entiers.
    Ce qui tu peux faire si tes nombres a et b sont initialement des doubles, c'est écrire int(a)%int(b), il converti a et b en entier.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 40
    Par défaut
    Oui désolé pour le 7/4 je pensait a une autre opération "test" que j'avais fait avant merci pour le conseil pour pouvoir utilser le modulo avec des non-int.
    Je dois donc déduire qu'on peut pas obtenir le modulo de 2.324544 par 125/1243 ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par défaut
    Je dois donc déduire qu'on peut pas obtenir le modulo de 2.324544 par 125/1243 ?
    j'ai pas compris ?

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 962
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 962
    Par défaut
    Hiu,

    Il faut tout de même ouvrir un bouquin/cours de temps en temps.

  10. #10
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    '/' n'est pas la division entière mais bien la division tout court. Simplement, si tu l'utilise sur des entiers, cet opérateur te renvera un entier, sur des float il te renvera un float etc.

    Pour faire un modulo sur des nombres non entiers, il faut utiliser std::fmod. Dans <cmath> j'imagine.

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 40
    Par défaut
    Bonjour,
    ce que je voulais dire par :
    Je dois donc déduire qu'on peut pas obtenir le modulo de 2.324544 par 125/1243 ?
    C'est que je venais de comprendre qu'on ne peut pas obtenir le modulo de deux nombres réels ou complexes. Et si ce n'etait pas le cas (c'est à dire qu'on pouvait l'obtenir) de me corriger.

  12. #12
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    a%b (opérateur modulo) renvoit le reste de la divison euclidienne de a par b
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  13. #13
    Membre expérimenté
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Par défaut
    lorsque tu poses (euclidien) une division, tu peux obtenir :

    un nombre a virgule

    OU t'arreter avant la virgule (Et le petit nombre dont tu ne t'as pas occupé sera le "reste", c'est précisément le sens du modulo ).

    Donc non on ne peut pas obtenir le résultat d'un nombre à virgule modulo un autre pour la simple raison que ce n'est pas défini.

  14. #14
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Citation Envoyé par NiamorH Voir le message
    Pour faire un modulo sur des nombres non entiers, il faut utiliser std::fmod.
    Vous l'avez vu là ??

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

Discussions similaires

  1. Division entiers qui donne un double
    Par Viscapon dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 05/01/2009, 11h03
  2. Débutant : diviser un tableau de valeur par 1000
    Par sebest95 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 27/05/2008, 14h53
  3. [tableau Java] + débutant + fréquence entier
    Par Joliefleur4ever dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 07/12/2007, 18h47
  4. [débutant]diviser une List par paquet
    Par pingoui dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 01/09/2007, 18h24
  5. [TP]Division de longs entiers
    Par Pebg dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 14/12/2003, 12h10

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