Salut les programmeurs C,
Je continue de découvrir le C mais je n'ai pas encore commencé l'apprentissage de la standard library en profondeur d'où cette question réellement a 2 centimes :
À 2 cents plus exactement car j'ai fait un programme qui calcule ce dont vous avez besoin exactement pour payer une addition :
On entre une somme en Euro et le programme calcule de combien de billets et pièces de chaque sorte vous avez besoin pour avoir l'appoint dont je vous épargne le code source.
Le problème est que je demande l'entrée avec:
Le programme fait des modulo grâce à deux fonctions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part scanf("%f",&euro_entry) ;
successifs décroissant sur la somme entrée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int get_euro_mod(float s, int i) { return s/i ; } int get_cents_mod(float s, float i) { return s/i ; }
J'ai bien essayé de formater l'entrée afin d'avoir un float a deux chiffres, sans succès, après, le point pour que l'appoint soit bon: le résultat est faussé à cause de la longueur de la représentation de la somme entrée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 euro_500=get_euro_mod(euro_entry, 500) ; euro_entry=euro_entry- (get_euro_mod(euro_entry, 500)*500) ; // ... cents_01=get_cents_mod(euro_entry, 0.01) ; euro_entry= euro_entry- (get_cents_mod(euro_entry, 0.01)*0.01) ;
J'ai clairement identifié le problème venant de scanf() qui ne permet pas de constante tel : "%.2f" ou du moins qui génère des warnings et des erreurs de traitement dans ce cas là.
Merci pour vos réponses.
Partager