Opération modulaire
programmation
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Opération modulaire
- Le fichier de pagination est insuffisant pour terminer cette opération ✓ - Forum Logiciels
- Spy fox opération milkshake télécharger gratuit - Forum Jeux vidéo
- Impossible de terminer l'opération car le fichier contient un virus ✓ - Forum Virus
- La vidéo à télécharger va 5 fois plus vite que sa vitesse normale. divisez sa vitesse par 5 pour rétablir sa vitesse normale. après cette opération, combien de papillons figurent entre la 17e et la 18e seconde ? ✓ - Forum Montage et acquisition vidéo
- Sms crédit agricole operation suspecte - Guide
2 réponses
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
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;
}