La fonction modulo en c++

Fermé
MFI - 7 avril 2011 à 23:07
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 8 avril 2011 à 10:55
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
7 avril 2011 à 23:52
Ç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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
8 avril 2011 à 08:31
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 avril 2011 à 10:55
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