17 votes

Implémentation de l'opérateur modulo en tant que fonction en C

Comment peut-on implémenter l'opérateur modulo comme une fonction en C sans utiliser l'opérateur ?

39voto

Faites une division entière suivie d'une multiplication, et soustrayez.

#include <stdio.h>
int main()
{
  int c=8, m=3, result=c-(c/m*m);
  printf("%d\n", result);
}

17voto

fbrereto Points 21711

Voilà :

a % b = a - (b * int(a/b))

7voto

Justin Ethier Points 57486

Vous pourriez simuler x % y en soustrayant de manière répétée y de x et en gardant la trace du résultat. A chaque itération, si le résultat est inférieur à y alors vous avez votre reste, et vous pouvez simplement le retourner.

3voto

James McNellis Points 193607

Simple :

Si le quotient a/b est représentable, l'expression (a/b)*b + a%b est égal à a

(norme C99, 6.5.5/6).

1voto

Dalwin Lewis Points 19

Dividende / Diviseur = Quotient

La formule (en Python 3) est ci-dessous :

Modolus = Divident - Dividende // Diviseur * Diviseur

Par exemple, si le Dividende = 5, et le Diviseur = 2, alors

Modulus = 5 - 5 // 2 * 2 qui devient 5 - 2 * 2 5 - 4 1 Rappelez-vous que // a une priorité plus élevée que -, donc 5 // 2 est évalué en premier.

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