Nombres modulo négatifs : un problème difficile
Pour les nombres positifs, il est simple de calculer le reste de la division d'un entier par un autre. Cependant, l'opérateur modulo standard (%) peut conduire à des résultats inattendus lorsque des nombres négatifs sont impliqués. En effet, l'opérateur modulo renvoie le reste après division et pour les opérandes négatifs, le résultat est également négatif.
Pour surmonter ce problème et déterminer correctement le module des nombres négatifs, nous devons adapter notre approche. Une solution courante consiste à créer une fonction modulaire personnalisée pour garantir que les résultats se situent toujours dans la plage souhaitée.
Ce qui suit est une implémentation de fonction modulaire qui gère avec précision les entrées positives et négatives :
<code class="language-c++">int mod(int x, int m) { int r = x % m; return r < 0 ? r + m : r; }</code>
Dans cette fonction, nous obtenons d'abord le reste de la division en utilisant l'opérateur modulo standard. Si le reste est négatif, une valeur modulo est ajoutée pour le convertir en plage positive. Sinon, nous renvoyons le reste tel quel.
En utilisant cette fonction modulo modifiée, nous pouvons déterminer correctement la position de l'index dans le tableau, que l'entrée soit un entier positif ou négatif. Par exemple :
GetArrayIndex(4, 3) == 1 GetArrayIndex(3, 3) == 0 GetArrayIndex(2, 3) == 2 GetArrayIndex(1, 3) == 1 GetArrayIndex(0, 3) == 0 GetArrayIndex(-1, 3) == 2 GetArrayIndex(-2, 3) == 1 GetArrayIndex(-3, 3) == 0 GetArrayIndex(-4, 3) == 2
Avec cette approche, nous pouvons parcourir efficacement le tableau en utilisant des indices qui gèrent correctement les nombres positifs et négatifs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!