Opération modulaire

programmation -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

dans mon programme je veux faire une opération modulaire d'un nombre négatif sur un nombre positif mais le résultat toujours fausse .
pouvez vous m'aider s'il vous plait .
merci d'avance .
programme:
printf("entrer un entier a\n",a);
scanf("%d",&a);
printf("entrer un entier b\n",b);
scanf("%d",&b);
z = a % b;
printf("z=%d",z);
par exemple j'ai a=-2 et b=5
donc le résultat juste doit être 3 alors que le programme donne -2

2 réponses

  1. Pierre1310 Messages postés 8854 Statut Membre 652
     
    Salut,

    Explique moi comment tu pourrai obtenir 3.
    0
  2. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,
    Pour l'opérateur modulo, la norme indique que le cas des valeurs négatives ou nulles est dépendant du compilateur.
    La définition mathématique n'étant pas claire non plus, il te faut séparer les cas et les gérer individuellement
    int modulo( int a , int b ) {
       int m;
       if ( b > 0 ) {
          if ( a >= 0 ) {
             m = a % b;  // les deux sont positifs, aucune ambiguité
          }
          else {  // cas de ton exemple, b positif et a négatif
             m = a % b;
             if ( m < 0 )
                m += b;  // valeur équivalent positive du modulo négatif
          }
       }
       else if ( b < 0 ) {
          if ( a >= 0 ) { // b négatif et a positif
             // TODO
          }
          else {  // les 2 sont négatifs
             // TODO
          }
       }
       else { // le cas où b est nul est lui aussi particulier
          // TODO
       }
       return m;
    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Et lorsque le monsieur aura fait le TODO, je donnerai 1 solution en 1 ligne :-).
      0