254 votes

Le mode du nombre négatif me fait fondre le cerveau !

Duplicata de Comportement étrange des mods en Objective-C

J'essaie de modéliser un entier pour obtenir une position de tableau afin de pouvoir tourner en boucle. En faisant i % arrayLength fonctionne bien pour les nombres positifs, mais pour les nombres négatifs, tout va de travers.

J'ai donc besoin d'une implémentation de

int GetArrayIndex(int i, int arrayLength)

de telle sorte que

GetArrayIndex(-4, 3) == 2
GetArrayIndex(-3, 3) == 0
GetArrayIndex(-2, 3) == 1
GetArrayIndex(-1, 3) == 2
GetArrayIndex( 0, 3) == 0
GetArrayIndex( 1, 3) == 1
GetArrayIndex( 2, 3) == 2
GetArrayIndex( 3, 3) == 0
GetArrayIndex( 4, 3) == 1

J'ai déjà fait ça avant mais pour une raison quelconque, ça me fait fondre le cerveau aujourd'hui :(

4voto

starblue Points 29696

Ajoutez simplement votre module (arrayLength) au résultat négatif de % et tout ira bien.

3voto

Abin Mathew Points 83

Ajout d'une certaine compréhension.

Par Définition euclidienne le résultat du mod doit toujours être positif.

Ex :

 int x = -3;
 int n = 5;

 int mod(int n,int x)
 {
     return ((n%x)+x)%x);
 }

mis à part :

  -1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X