Elektronique - Cours d'électronique

Programme de rendu de monnaie (langage C)

icône imprimante Imprimer cette page

Introduction sur le programme

Difficulté: etoile pleine

Ce tutorial va vous expliquer comment créer un petit programme en langage C. Ce dernier va indiquer comment rendre la monnaie.
Je vais détailler au maximum ce que je fais. Cependant, si vous voulez mieux comprendre il vous faut de petites connaissances en langage C.

J'ai souhaité réaliser un tutorial très complet pour permettre à un maximum d'entre vous de pouvoir réaliser cette application le plus facilement possible.
Ne vous découragez pas trop vite, et n'oubliez pas que c'est en forgant qu'on devient forgeron. smiley

Plan du tutorial

retour en haut

Cahier des charges

Il faut faire un programme qui affiche le nombre minimum de billets et de pièces, selon une somme que l'utilisateur a entré.
Prenons un exemple, j'entre la valeur 348€ dans le programme. Ce dernier doit me dire que ça correspond à :

  • 1 billet de 200€
  • 1 billet de 100€
  • 2 billets de 20€
  • 1 billet de 5€
  • 1 pièce de 2€
  • 1 pièce de 1€

En effet : 348 = 1*200 + 1*100 + 2*20 + 1*5 + 1*2 + 1*1

Voici une capture d'écran du programme que j'ai réalisé. Si vous suivez bien ce petit tutorial, vous serez capable de faire la même chose vous aussi.

exemple du programme rendu de monnaie en langage c
retour en haut

Pratique

Je vais maintenant décrire tout ce qu'il est nécessaire d'inclure dans son programme, afin de le réaliser.

Bibliothèque

Tout d'abord il faut appeler la bibliothèque nécessaire au bon fonctionnement.

#include <stdio.h>

Fonction principale (et initialisation des variables)

Une fois la bibliothèque appelée, on peut commencer à créer la fonction principal.
Pour l'appeler il faut l'inclure de cette manière :

int main(void)
{
/* le programme sera appelé ici */
}

Toute nos instructions seront dorénavant dans cette fonction principale, entre les 2 acolades.

L'étape suivante consiste à remplir la fonction principale.
L'une des premières étapes c'est d'appeler les variables nécessaires. Les constantes que l'ont va utiliser seront des int.
Voici comment nous allons toutes les appeler en même temps :

int nb500, /* correspond à la variable du nombres de billets de 500€ */
nb200,/* correspond à la variable du nombres de billets de 200€ */
nb100,
nb50,
nb20,
nb10,
nb5,
np2,/* correspond à la variable du nombres de pièces de 2€ */
np1,
argent;/* c'est la variable dans laquel on enregistrera la somme entré par l'utilisateur */

Cette partie de code sera donc à mettre dans le début de la fonction principale.

Pour afficher un message à l'utilisateur, il faut utiliser la fonction printf, elle s'utilise de cette manière :

printf("Veuillez entrer la somme d'argent\n");
ce petit bout de programme va donc afficher "Veuillez entrer la somme d'argent", mais à quoi correspond "\n"?

Le \n sert à passer une ligne, sinon tout le texte s'écrirait sur une seule ligne. Le texte s'affichera donc à l'écran comme ceci :

Veuillez entrer la somme d'argent
|

Pour demander une information à l'utilisateur, il faut cette fois-ci utiliser la fonction scanf

scanf("%d", &argent);

Une fois cette instruction écrite, le programme attendra que l'utilisateur rentre une valeur, terminé par "entré". La valeur que l'utilisateur aura entré sera enregistrée dans la variable argent que l'ont à définit plus haut.

Calcul du programme

Maintenant, il nous reste plus que deux choses à faire : faire un calcul, et ensuite il faudra afficher le résultat.
Le calcul que l'ont doit faire c'est celui pour savoir combien de fois il y a de billets de 500€ dans la somme que l'utilisateur du programme à entrée. Imaginons l'utilisateur entre la valeur 600€, alors il faudra dire qu'il y a l'équivalent d'un billet de 500€ (plus un billet de 100€).
Le calcul à effectué est simple, il s'agit d'une simple divisions.
Pour dire que la variable nb500 est égal à 1 dans ce cas là, il faut faire cette ligne de code :

nb500 = argent/500;

Dans notre cas, on va avoir la formule : nb500 est égal à 600 divisé par 500. Bien que le nombre sera à virgule normalement, la variable nb500 l'enregistrera sans les chiffres derrière la virgule, car nb500 est un int. Ainsi nb500 vaudra la valeur 1.
Ensuite il faut pouvoir faire le reste des calculs. Dans notre cas, si on retire 500€ à la somme d'origine de 600€, il faut utiliser la fonction modulo. C'est l'équivalent en mathématique d'un reste d'une division. Le code à utiliser sera :

argent = argent%500;

Et dans notre cas, on peut résumer le calcul par : argent est égal au reste de la division 600 divisé par 500.

Il faut maintenant mettre les deux lignes de code cité ci dessus, et les mettre bout à bout pour toutes les valeurs des différents billets et pièces en vigueur. Le bout de programme qu'il faudra inclure sera donc :

nb500 = argent/500;
argent = argent%500;
nb200 = argent/200;
argent = argent%200;
nb100 = argent/100;
argent = argent%100;
nb50 = argent/50;
argent = argent%50;
nb20 = argent/20;
argent = argent%20;
nb10 = argent/10;
argent = argent%10;
nb5 = argent/5;
argent = argent%5;
np2 = argent/2;
argent = argent%2;
np1 = argent;

Affichage des résultats

Et voilà on a fait le plus dur. Il reste plus qu'à afficher le résultat.
Pour ce faire on va encore utiliser la fonction printf, comme vue plus tôt. La phrase du résultat devras être :
printf("Il faut X billet(s) de 500 EUR\n");
Il faut bien sur remplacer le X par la valeur correspondant.
Pour faire ça, il faut faire cette ligne de code :

printf("Il faut %d billets de 500 EUR\n", nb500);

Le programme va comprendre qu'il faut remplacer %d par la valeur contenu dans nb500.

Le bout de code pour afficher le résultat sera donc :

printf("Il faut %d billet(s) de 500 EUR\n", nb500);
printf("Il faut %d billet(s) de 200 EUR\n", nb200);
printf("Il faut %d billet(s) de 100 EUR\n", nb100);
printf("Il faut %d billet(s) de 50 EUR\n", nb50);
printf("Il faut %d billet(s) de 20 EUR\n", nb20);
printf("Il faut %d billet(s) de 10 EUR\n", nb10);
printf("Il faut %d billet(s) de 5 EUR\n", nb5);
printf("Il faut %d piece(s) de 2 EUR\n", np2);
printf("Il faut %d piece(s) de 1 EUR\n", np1);

Dans l'exemple où l'ont entre la valeur 600€, alors le résultat sera :

Veuillez entrer la somme d'argent
600
Il faut 1 billet(s) de 500 EUR
Il faut 1 billet(s) de 100 EUR
|
retour en haut

Programme final

Et voilà on a finit.
La seule chose que vous devez savoir, c'est que si vous utilisé Dev-c++, vous allez devoir finir votre programme par :

system ("pause");
return 0;
Et pourquoi donc ?

En faites, ce code qu'il faut mettre à la fin signifie, que le programme est en pause, et qu'il continuera lorsque une touche du clavier sera pressée. Si on ne le mettait pas, alors Dev-c++, passera directement à la suite, c'est à dire à la fin du programme, et l'arrêterais aussitôt.
Donc c'est pour ne pas que le programme ne se ferme, avant même que l'utilisateur ai put lire le résultat.
A l'écran on peut donc lire maintenant :

Veuillez entrer la somme d'argent
600
Il faut 1 billet(s) de 500 EUR
Il faut 1 billet(s) de 100 EUR
Appuyez sur une touche pour continuer... _

Le programme est totalement finit. Vous pouvez maintenant l'améliorer si vous le souhaitez. Pour tester ce programme je vais vous donner tout le code qu'il vous faut copier dans le logiciel Dev-c++. Voici le programme :

#include <stdio.h>

int main(void)
{
int nb500, /* correspond à la constante du nombres de billets de 500€ */
nb200,/* correspond à la constante du nombres de billets de 200€ */
nb100,
nb50,
nb20,
nb10,
nb5,
np2,/* correspond à la constante du nombres de pièces de 2€ */
np1,
argent;/* c'est la constante dans laquel on enregistrera la somme entré par l'utilisateur */

printf("Veuillez entrer la somme d'argent\n");
scanf("%d", &argent);

nb500 = argent/500;
argent = argent%500;
nb200 = argent/200;
argent = argent%200;
nb100 = argent/100;
argent = argent%100;
nb50 = argent/50;
argent = argent%50;
nb20 = argent/20;
argent = argent%20;
nb10 = argent/10;
argent = argent%10;
nb5 = argent/5;
argent = argent%5;
np2 = argent/2;
argent = argent%2;
np1 = argent;

printf("Il faut %d billet(s) de 500 EUR\n", nb500);
printf("Il faut %d billet(s) de 200 EUR\n", nb200);
printf("Il faut %d billet(s) de 100 EUR\n", nb100);
printf("Il faut %d billet(s) de 50 EUR\n", nb50);
printf("Il faut %d billet(s) de 20 EUR\n", nb20);
printf("Il faut %d billet(s) de 10 EUR\n", nb10);
printf("Il faut %d billet(s) de 5 EUR\n", nb5);
printf("Il faut %d piece(s) de 2 EUR\n", np2);
printf("Il faut %d piece(s) de 1 EUR\n", np1);

system ("pause");
return 0;
}

Copiez donc ce programme et tester le. Pour lancer la compilation et l'exécution je vous rappel qu'il faut appuyer sur la touche F9.

Idée d'amélioration

Je vais vous donner plusieurs consignes pour rendre le programme plus efficace :

  • Faire en sorte de ne pas afficher une ligne de résultat, si la valeur de la variable correspond est égal à zéro.
    Par exemple si je rentre une valeur de 123€, il y aura forcément 0 billet de 500€ et 0 billet de 200€,... etc. Il faut donc ne pas afficher ces lignes là.
  • Dans mon exemple, j'ai mis un "s" entre parenthèse, dans le cas où il y a plusieurs pièces ou billets, ou bien alors si il n'y en a qu'un seul. L'idéal serait d'afficher un s si il y en a plusieurs, et de ne pas afficher de "s" si il n'y a qu'un seul billet.

Bonne chance.

retour en haut

Télécharger le programme

Voici un petit tableau où vous pourrez télécharger le programme au complet. Vous pourrez donc le tester.

Attention cependant, le programme que j'ai fais est un peu amélioré. Si vous souhaitez faire les améliorations vous même, je vous conseil de chercher un peu, sinon vous aurez les réponses.
Nom Description exemple programme code en .c code en .txt Difficulté
Rendu de monnaie Permet de calculer, le nombre de billets/pièces qu'il faut rendre selon la somme d'argent correspondante. exemple programme programme en .c programme en .txt etoile pleine
retour en haut