Modulo en C

rayxx -  
Char Snipeur Messages postés 9813 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.

6 réponses

latoopa Messages postés 258 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
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
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
-1%6=-1
-20%6=-2
20%6=2
C'est un peu comme si il factorisait le "-"...
0
latoopa Messages postés 258 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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
ou alors, pour prendre en compte tout les cas :
modulo=i>0?i%6:6+i%6;
0