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

Langage Java Discussion :

Fonction modulo


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Par défaut Fonction modulo
    Bonjour, je suis étudiant en première année d'IUT Info et je me suis mis ya quelques jour au java (pour le plaisir, dans le cadre des cours on est encore en ADA) et je suis arrivé face à un problème. Sur tout les site où j'ai pu chercher, il était dit que le modulo était représenté par % or si je ne me trompe pas, le % ne fai que calculer le reste de ladivision entière ce qui donne la meme chose que le modulo me direz vous, mais en fait non, pas pour les nombres négatifs... De ce fait quand dans mon algoritme quand je fais -1%3 (par exemple) il me renvoi -1 or si je suis pas mauvais en math, -1 modulo 3 sa fai 2... Bref voila où est mon problème, donc n'y aurait il pas une véritable fonction modulo et non pas une alternative comme le % ?

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut Re: Fonction modulo
    Citation Envoyé par Derf4002
    -1 modulo 3 sa fai 2...
    euh non, pas d'après moi...


    -1 / 3 = -0.33 Arrow partie entière de la division = -0, reste = -1

    donc le modulo 3 de -1 donne -1, c'est tout à fait normal (en tout cas pour moi)

    quelle est ta définition du modulo et comment arrives-tu à -1 modulo 3 = 2 ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Par défaut
    Oui mais non, la c le reste qui vaut -1, pas le modulo !!! Revoi tes cours de math ^^ C'est justement la le problème face auquelje suis, c'est que tout le monde sur le net fait la meme erreur, et associe le modulo au reste sauf que c'est pas la meme chose quand tu jou avec des nombres négatifs !!!

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut Re: Fonction modulo
    Citation Envoyé par Pill_S
    quelle est ta définition du modulo et comment arrives-tu à -1 modulo 3 = 2 ?
    moi j'ai toujours appris que le modulo était le reste de la division entière donc voilà....

  5. #5
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 17
    Par défaut
    Tout ça est une histoire de congruence et de classes ....
    Cours de maths DUT info (1ère année 2002) :
    -1 % 3 :
    -1 dans la classe de 3/3Z vaut 2

    => 2%3 = 1

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Par défaut
    Voila au niveau de la représentation graphique ce que cela change :




    Le premier représente la fonction reste, le second, la fonction modulo. Tu peu vérifier sur ta calculatrice si tu veux

    Ensuite pour l'histoire de classe, j'ai pas tt compris...

  7. #7
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 17
    Par défaut
    Bon pour faire clair, tout modulo s'exprime en fonction de classes d'équivalences ...

    Plus clairement, si tu prends un entier tu dis que tu peux l'exprimer de la façon x = y (mod z).

    Contrairement à ce que tu peux croire, le symbole % désigne l'opération modulo qui est le reste de la division euclidienne et non pas le reste d'une division classique. Ce qui noous fait
    -1 / 3 => 0
    -1 % 3 => -1

    Citation Envoyé par Derf4002
    Revoi tes cours de math ^^ C'est justement la le problème face auquelje suis, c'est que tout le monde sur le net fait la meme erreur, et associe le modulo au reste sauf que c'est pas la meme chose quand tu jou avec des nombres négatifs !!!
    Pour sortir des choses comme ça faut jamais avoir fait de maths et je peux te dire que le modulo s'applique à tous ce ke tu veux donc si tu veux mon conseil : vas vite voir aux chapitres congruences et équivalences latérales dans un bouquin de maths discrètes !!!!!

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Par défaut
    C bien jolie tout ca, mais vois tu, la tu ne m'aide pas... Le fait est que j'ai fait un algo que j'ai programmé en ada utilisant les modulo (fonction mod en ada) et non pas le reste (fonction rem en ada). Je réécrie ce meme algo en java en utilisant % à la place de mod, et je remarque que sa revien à la meme chose que si j'avais fais un rem en ada. Alors escuse moi de ne pas avoir fait les contingences et tout le tralala sur les math discrétes mais le fait est que la fonction % ne me donne pas ce que je veu, cad un modulo qui correspond à la fonction mod que j'utilise en ADA et qui correspond au modulo de ma calculatrice Sachant que pour ma calculatrice -1 mod(3) = 2, -2 mod(3) = 1 et ainsi de suite, sachant que excel me trouve la meme chose, j'aimerais, svp, connaitre le moyen d'effectuer le "meme" type de modulo pisque apparement % est aussi un modulo... (chose que, entre parenthèse, ma prof de prog refute catégoriquement).

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Par défaut
    Solution trouvé sur un autre forum (celui de codes-sources)... Pour ceux qui comme mooi se poserai la question voila la solution proposé et qui marche !!! Un vrai modulo qui marche donc avec les négatifs :

    Bonjour,

    essaye avec la classe java.math.BigInteger.(http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigInteger.html)

    BigInteger b1 = new BigInteger("-1");
    BigInteger b3 = new BigInteger("3");
    int mod = b1.mod(b3).intValue(); // OU BigInteger mod = b1.mod(b3);
    Cette classe n'a pas de constructeur qui accepte des "int" ou "long" ... mais tu peux faire un truc du genre :
    int i1 = -1 ;
    int i2 = 3 ;
    BigInteger b1 = new BigInteger(new Integer(i1).toString());
    BigInteger b3 = new BigInteger(new Integer(i2).toString());
    int mod = b1.mod(b3).intValue();
    Il y a peut-être plus simple, mais le résultat semble correct.
    ed
    (Exemple pour -1mod3)
    Voila ^^

  10. #10
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Pourquoi chercher midi à 14h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public static int mod (int a, int b) {
            int res = a % b;
            if (res<0 && b>0) {
                res += b;
            }
            return res;
        }
    a++

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 18
    Par défaut
    C sur que c'est encore mieux Merci beacoup sa simplifie pas mal la chose ^^

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

Discussions similaires

  1. [WD17] Fonction modulo windev
    Par Aigle4 dans le forum WinDev
    Réponses: 5
    Dernier message: 27/02/2013, 18h33
  2. [GNU Pascal] Fonction modulo (mod) inconnue ?
    Par porschecollec dans le forum Autres IDE
    Réponses: 5
    Dernier message: 29/11/2009, 19h12
  3. Fonction modulo qui connait?
    Par kitty2006 dans le forum SAP
    Réponses: 1
    Dernier message: 08/09/2008, 15h09
  4. Réponses: 1
    Dernier message: 02/07/2008, 14h49
  5. fonction modulo 12
    Par kouki-raid dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2007, 09h18

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