Problème de division
Résolu/Fermé
teschan
-
Modifié le 1 déc. 2023 à 15:47
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 3 déc. 2023 à 20:00
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 3 déc. 2023 à 20:00
A voir également:
- Problème de division
- Microsoft skype division - Télécharger - Téléphonie & Visio
- Division euclidienne ti 83 ✓ - Forum calculatrices
- Sommeprod division - Forum Excel
- The division 2 solo hors ligne ✓ - Forum jeux en ligne
- Ti 83 - Forum calculatrices
1 réponse
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
Modifié le 1 déc. 2023 à 15:48
Modifié le 1 déc. 2023 à 15:48
Bonjour,
Ton programme ne compile pas :
(mando@silk) (~) $ g++ toto.cpp
toto.cpp: In function ‘int main()’:
toto.cpp:20:23: error: invalid operands of types
‘float’ and ‘float’ to binary ‘operator%’
20 | reste = dividende % diviseur;
| ~~~~~~~~~ ^ ~~~~~~~~
| | |
| float float
Et effectivement, c'est normal. L'opérateur modulo n'est défini que pour des types entiers (probablement non signé, donc le type unsigned int, ou en abrégé unsigned).
Par ailleurs, outre les quelques fautes dans le texte, ta variable division devrait en réalité s'appeler quotient.
Note aussi qu'il est inutile de rouvrir std::cout dans des instructions consécutives. Il vaut mieux toujours utiliser le même flux.
Enfin, pour rendre le code plus lisible, évite les lignes trop longues et mets des espaces autour des opérateurs (ce sont des conventions de codage assez communes, autant prendre les bonnes habitudes tout de suite).
En appliquant toutes ces corrections, on obtient :
#include <iostream> int main() { using namespace std; unsigned dividende, diviseur, reste, quotient; cout << "bonjour,aujourd'hui nous allons demander deux " "nombres entiers et calculer leur quotient et " "le reste de la division" << endl << "allons-y étape par étape" << endl << "d'abord faisons la division" << endl << "rentrez un dividende" << endl; cin >> dividende; cout << "rentrez un diviseur" << endl; cin >> diviseur; quotient = dividende / diviseur; cout << "quotient = " << quotient << endl << "maintenant nous avons le quotient" << endl; reste = dividende % diviseur; cout << "reste = " << reste << endl << "nous avons trouvé le reste" << endl; return 0; }
Bonne chance
2 déc. 2023 à 04:55
Je ne sais pas si c'est bien vu de commenter un sujet résolu.
On peut faire un modulo sur un entier signé.
Ça marche même avec des entiers négatifs.
3 déc. 2023 à 20:00
C'est mal vu :-) Non je rigole, si le commentaire est fondé, mais je pensais avoir déjà couvert ce doute. En effet, j'ai dit dans mon message précédent "probablement non signé", car en maths l'opérateur modulo est effectivement bien défini sur Z (entier signé), mais il est probable (pas obligatoire) qu'en réalité l'exercice était imaginé sur N (entier non signé, généralement c'est le cas quand on apprend à faire des divisions euclidiennes). Et effectivement si ça marche avec un entier signé, ça marche a fortiori sur un entier négatif.