Bonjour à tous et bonne année !
Je cherche à trouver le mécanisme en C++ qui permet de gérer dynamiquement les types lors d'une division en fonction des nombres entrés par l'utilisateur.
La division que je cherche à implémenter doit avoir les règles suivantes (le type des opérandes et du résultat est noté entre crochets) :
- a [float] divisé par b [float] renvoie a/b [float]
- a [int] divisé par b [float] renvoie a/b [float]
- a [float] divisé par b [int] renvoie a/b [float]
- Le cas difficile : a [int] divisé par b [int] renvoie la division entière a/b [int] ssi a % b = 0, sinon renvoie la division flottante (float)a/b [float]
Exemple d'exécution (le code tapé par l'utilisateur est rouge) :Je n'arrive pas à écrire la boucle qui permette de se "souvenir" au moment de l'exécution du type du résultat d'une itéartion à l'autre, et de renvoyer le type ad hoc en fonction du type et de la valeur des arguments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 >> Entrez le nombre initial : 4 >> Entrez le diviseur : 2 Résultat : 2 [int] >> Entrez le diviseur : 1 Résultat : 2 [int] >> Entrez le diviseur : 2 Résultat : 0.5 [float] >> Entrez le diviseur : 3 Résultat : 0.16666666 [float] etc.
Ma première idée était de surcharger quatre fois une fonction div pour int et float, mais ce n'est pas possible car en C++ il n'est pas possible de décider d'un type de retour en fonction de la valeur des arguments à l’exécution...
Des idées ?
Jean
Partager