Modulo en C

rayxx -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je voudrais juste savoir pourquoi, quand je demande de m'afficher (-1) modulo 6 (par exemple) en C, il me met -1, alors que normalement c'est 5.
Merci.
Configuration: Windows 7
Safari 532.5

6 réponses

  1. latoopa Messages postés 278 Date d'inscription   Statut Membre Dernière intervention   32
     
    Je pense que le modulo ne marche pas pour un négatif...

    Pour contourner ce problème, essaie :
    - modulo de la valeur absolue de ton nombre => |-1|
    - tu fais son modulo par rapport à 6 => 1
    - tu fais : 6 - (le modulo => 1) = 5 !!

    Ca devrait marcher ;)
    Aplouch

    Toopa
    0
  2. rayxx
     
    merci, mais il y aurait pas une méthode un peu plus simple ? parce que la ça va me faire changer pas mal de truc dans mon programme si je fais comme ça.
    0
  3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    -1%6=-1
    -20%6=-2
    20%6=2
    C'est un peu comme si il factorisait le "-"...
    0
  4. latoopa Messages postés 278 Date d'inscription   Statut Membre Dernière intervention   32
     
    Tu trouves ca compliqué ?

    int nouvelleValeur = sqrt( pow(taValeur,2) ) ;  // peut être meme que abs(taValeur) 
    int modulo = nouvelleValeur % 6;
    int moduloFinal = 6 - modulo;


    Ca prend trois lignes :)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. rayxx
     
    Je suis d'accord que c'est pas non plus super compliqué, c'est juste que je l'utilise plusieurs fois dans mon programme. Je pourrais rajouter la fonction modulo qui fait ces opérations mais bon, je me disais qu'il y avait peut être une méthode plus directe.
    0
  7. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    ou alors, pour prendre en compte tout les cas :
    modulo=i>0?i%6:6+i%6;
    0