La fonction modulo en c++

MFI -  
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


2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Ç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...
1
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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.
template<typedef T> T modulo(T nb,T mod)
{
    T resu=nb;
    while(resu>mod)
           resu-=mod;
    return resu;
}
1
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Dans ce cas il faut repasser par les entiers, mais ce n'est plus du calcul modulaire au sens algébrique, car ce n'est pas possible dans R.

On aurait donc quelque chose comme q = (int) a/b, et r = a-q*b notre résultat.
0