La fonction modulo en c++

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

  1. Modérateur
    Ç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. Contributeur
      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. Modérateur
        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.