La fonction modulo en c++
MFI
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
comment on fait pour introduire la fonction modulo entre deux réels en c++
exemple:
Tm= t modulo Tc
ou Tc, t sont des réels.
je vous informe que j'ai utilisé la forme suivantes ( Tm=t % Tc ) mais j'arrive pas a trouvé la solution l'exécution me donne que des nombres nuls
comment on fait pour introduire la fonction modulo entre deux réels en c++
exemple:
Tm= t modulo Tc
ou Tc, t sont des réels.
je vous informe que j'ai utilisé la forme suivantes ( Tm=t % Tc ) mais j'arrive pas a trouvé la solution l'exécution me donne que des nombres nuls
2 réponses
Ça n'a aucun sens de parler de calcul modulaire sur les réels !
Quand tu fais a%b c'est le reste de la division, or pour des réels elle est forcément nulle.
Pour des entiers on aurait q=a/b et r=a%b tels que a = q*b+r
Or avec des réels on aura q*b qui est exactement égal à a, donc r=0...
Ce n'est pas un bug, tu obtiens 0 car c'est la bonne valeur, même si elle n'a aucun sens...
Quand tu fais a%b c'est le reste de la division, or pour des réels elle est forcément nulle.
Pour des entiers on aurait q=a/b et r=a%b tels que a = q*b+r
Or avec des réels on aura q*b qui est exactement égal à a, donc r=0...
Ce n'est pas un bug, tu obtiens 0 car c'est la bonne valeur, même si elle n'a aucun sens...
Salut.
Bien sur que ça a un sens de parler de modulo avec des réels. Exemple courant en mathématique avec les angles :
Si cos(a) vaut 1 alors a vaut 0 modulo 2 pi.
Je ne connais pas de fonction C/C++ pour calculer le modulo de réels, mais on doit pouvoir la faire assez facilement.
Bien sur que ça a un sens de parler de modulo avec des réels. Exemple courant en mathématique avec les angles :
Si cos(a) vaut 1 alors a vaut 0 modulo 2 pi.
Je ne connais pas de fonction C/C++ pour calculer le modulo de réels, mais on doit pouvoir la faire assez facilement.
template<typedef T> T modulo(T nb,T mod) { T resu=nb; while(resu>mod) resu-=mod; return resu; }