Alors voila, je désire faire un petit programme qui m'indique la monaie à rendre aux clients,
pour cela j'entre lr prix de l'article, j'entre le montant que le client me donne.
Le programme doit m'indiquer la monaie que je puisse rendre au client ( le plus de grosse somme possible ).
Exemple:
le prix: 5
le montant donné: 20
je doit rendre: 1 billet de 10, et 1 billet de 5
Alors les calculs ont l'air de bien marché, cependant, si je met par exemple:
prix: 5.24
montant: 5008.68
Il m'affiche:
Le prix de l'article: 5.240000 euros (comment ne pas avoir tout les 0 inutiles ?)
Le montant donné: 5008.680176(d'ou sort ce 0176 ?? )
M'erci d'avance pour la réponse à ces 2 questions, et aux bon conseils que vous me donnerez pour améliorer/optimiser le programme.
Voila le programme que j'ai fait:
#include <stdio.h>
#include <stdlib.h>
int main()
{
float prix,donne,rendre;
printf("Quel est le prix de la marchandise ? "); scanf("%f", &prix); //L'utilisateur entre le prix de la marchandise
printf("\nCombien donne l'acheteur ? "); scanf("%f", &donne); //Il entre la somme que le client lui donne
rendre=donne-prix; //On stock dans la variable 'rendre' la somme à rendre (somme donnée - prix)
printf("\n\nLa marchandise coute %f euros",prix);
printf("\nIl nous donne %f euros",donne);
printf("\n\nOn doit lui rendre %f euros",rendre);
/* On déclare les variables qui correspondent au nombre de billet/pieces de X somme que loin doit rendre */
int billet500=0; int billet200=0; int billet100=0; int billet50=0; int billet20=0; int billet10=0; int billet5=0;
int piece2=0; int piece1=0; int piece050=0; int piece020=0; int piece010=0; int piece005=0; int piece002=0; int piece001=0;
/* on calcul le nombre maximum de billets de 500 euros que l'on peut rendre en ne rendant pas plus que prévu */
while (billet500 * 500 <= rendre) { billet500++; }
billet500--;
rendre = rendre - billet500 * 500; //On met a jour la variable 'rendre' avec la nouvelle somme à rendre.
/* On fait pareil pour tout les autre billets/pieces */
while (billet200 * 200 <= rendre) { billet200++; } billet200--; rendre = rendre - billet200 * 200;
while (billet100 * 100 <= rendre) { billet100++; } billet100--; rendre = rendre - billet100 * 100;
while (billet50 * 50 <= rendre) { billet50++; } billet50--; rendre = rendre - billet50 * 50;
while (billet20 * 20 <= rendre) { billet20++; } billet20--; rendre = rendre - billet20 * 20;
while (billet10 * 10 <= rendre) { billet10++; } billet10--; rendre = rendre - billet10 * 10;
while (billet5 * 5 <= rendre) { billet5++; } billet5--; rendre = rendre - billet5 * 5;
while (piece2 * 2 <= rendre) { piece2++; } piece2--; rendre = rendre - piece2 * 2;
while (piece1 * 1 <= rendre) { piece1++; } piece1--; rendre = rendre - piece1 * 1;
while (piece050 * 0.50 <= rendre) { piece050++; } piece050--; rendre = rendre - piece050 * 0.50;
while (piece020 * 0.20 <= rendre) { piece020++; } piece020--; rendre = rendre - piece020 * 0.20;
while (piece010 * 0.10 <= rendre) { piece010++; } piece010--; rendre = rendre - piece010 * 0.10;
while (piece005 * 0.05 <= rendre) { piece005++; } piece005--; rendre = rendre - piece005 * 0.05;
while (piece002 * 0.02 <= rendre) { piece002++; } piece002--; rendre = rendre - piece002 * 0.02;
while (piece001 * 0.01 <= rendre) { piece001++; } piece001--; rendre = rendre - piece001 * 0.01;
/* Si le nombre de billets de 500 à distribué n'est pas nulle, on affiche le nombre de billets à rendre */
if (billet500 >= 1) { printf("\n\nOn donne au client %d billets de 500 euros. (soit: %d euros)",billet500,billet500 * 500); }
/* On fait pareil pour tout les autre billets/pieces */
if (billet200 >= 1) { printf("\nOn donne au client %d billets de 200 euros. (soit: %d euros)",billet200,billet200 * 200); }
if (billet100 >= 1) { printf("\nOn donne au client %d billets de 100 euros. (soit: %d euros)",billet100,billet100 * 100); }
if (billet50 >= 1) { printf("\nOn donne au client %d billets de 50 euros. (soit: %d euros)",billet50,billet50 * 50); }
if (billet20 >= 1) { printf("\nOn donne au client %d billets de 20 euros. (soit: %d euros)",billet20,billet20 * 20); }
if (billet10 >= 1) { printf("\nOn donne au client %d billets de 10 euros. (soit: %d euros)",billet10,billet10 * 10); }
if (billet5 >= 1) { printf("\nOn donne au client %d billets de 5 euros. (soit: %d euros)",billet5,billet5 * 5); }
if (piece2 >= 1) { printf("\nOn donne au client %d pieces de 2 euros. (soit: %d euros)",piece2,piece2 * 2); }
if (piece1 >= 1) { printf("\nOn donne au client %d pieces de 1 euro. (soit: %d euros)",piece1,piece1 * 1); }
if (piece050 >= 1) { printf("\nOn donne au client %d pieces de 50 centimes. (soit: %f euros)",piece050,piece050 * 0.50); }
if (piece020 >= 1) { printf("\nOn donne au client %d pieces de 20 centimes. (soit: %f euros)",piece020,piece020 * 0.20); }
if (piece010 >= 1) { printf("\nOn donne au client %d pieces de 10 centimes. (soit: %f euros)",piece010,piece010 * 0.10); }
if (piece005 >= 1) { printf("\nOn donne au client %d pieces de 5 centimes. (soit: %f euros)",piece005,piece005 * 0.05); }
if (piece002 >= 1) { printf("\nOn donne au client %d pieces de 2 centimes. (soit: %f euros)",piece002,piece002 * 0.02); }
if (piece001 >= 1) { printf("\nOn donne au client %d pieces de 1 centime. (soit: %f euros)",piece001,piece001 * 0.01); }
printf("\n\n\n");
system("PAUSE");
return 0;
}