Machine Automatique A Coca en langagr C

Pour mettre en application se que nous avons vu en cours, je vous propose d’étudier le projet : 
MAAC ( Machine Automatique A Coca ).
Pour réaliser ce projet nous devons construire une boucle do..while, mais nous aurons aussi a 
compter et a accumuler des valeurs. Il faut dire que le comptage des valeurs, qu’elles soient, tiennent 
une grande place dans les listings informatiques. Il existe au moins deux méthodes : 
-  La  comptage  d’un  certain  nombre  de  valeurs.  (On  compte  le  nombre  de  notes  obtenues  par  un 
étudiant). 
- L’accumulation de valeurs (les notes de l’étudiant sont ajoutées les unes aux autres). 
Ainsi le calcul de la moyenne des notes d’un étudiant s’effectue en divisant l’accumulation 
des notes par le nombre (ou comptage) des notes obtenues. 
Notre objectif : 
Construire une machine virtuelle qui simulerait de façon simplifiée un distributeur automatique 
de coca. 
Cahier des charges :
Pour  obtenir  une  canette,  l’utilisateur  doit  fournir  le  montant  indiqué  en  introduisant  un  certain 
nombre de pièces de monnaie dans  le distributeur. Celui ci n’accepte que  les pièces de (5, 10,  20 
dhs).  Au  fur  et  à  mesure  de  l’introduction  des  pièces  le  distributeur   affiche   la   valeur   totale 
engagée,   ainsi   que   le   nombre   de   pièces   par   catégorie  (nombres  de  pièces  de  5,  10…)  Le 
distributeur déclenche l’ouverture de la trappe à  canette dès que le montant atteint (ou dépasse, car
elle rend la monnaie) le prix indiqué, à savoir 45 dhs (Prix d’ami). 
Voilà,  il  ne  vous  reste  plus  qu’a  faire  le  programme…mais  non  je  plaisante,  nous  allons  le  faire 
ensemble. 
  
D’abord analysons ce cahier des charges. Le processus se déroule en trois étapes : 
- 1. Introduire une à une des pièces dans le distributeur. 
- 2. Pour chaque pièce engagée, il faut calculer et afficher : 
- 2.1. le nombre de pièce de 20, 10 et 5 dhs. 
- 2.2. la somme totale actuellement engagée. 
- 3. Le prix fixé est il atteint ou dépassé ? 
- 3.1. Non et dans ce cas on revient à la premièreligne d’instruction 
- 3.2. Oui, alors on libère la trappe, on distribue la canette et on rend la monnaie si il y a lieu. 
Tous les grands stratèges vous le diront : «Il faut diviser, pour régner ! » traduit dans le 
monde informatique cela revient à dire qu’il faut essayer de résoudre les petits problèmes qui 
constituent le grand ! Et c’est ce que vous allez faire en essayant de trouver une solution 
pour chacun des points précédents. 
  • Premièrement :

Construction de la boucle et introduction des pièces. 
En pratique, les points 1 et 3.1 décrivent une structure de boucle. L’introduction des pièces 
dans la fente du distributeur est une opération répétitive, qui ne s’arrête que lorsque 
l’utilisateur à engagé suffisamment de pièces dans l’appareil (c a d quand le montant du prix 
est atteint ou dépassé), on peut donc écrire l’algorithme suivant : 
Début répéter 
Entrer une pièce de monnaie 
Compter la somme engagée 
Tant que la somme engagée ne dépasse pas 45 dhs, retourner à Début répéter.
Essayez de le traduire en langage C :

  • Deuxièmement :

compter le nombre de pièces et faire la somme totale
Pour compter le nombre de pièces, notre programme doit pouvoir faire la distinction entre les
différentes catégories de pièces. On va donc déclarer autant de variables qu’il y a de catégorie
int nbPièce20c = 0, nbPièce10c = 0, nbPièce5c = 0, pièce, totalReçu = 0 ;
On à aussi déclarer une variable « pièce » qui accueil la valeur saisie au clavier ainsi qu ‘une
variable « totalReçu » qui représente la sommetotale engagée en cours d’exécution de la
boucle.
Pour arriver à nos fins, compter séparément les pièces de monnaies par catégories, la meilleur
méthode consiste à placer dans la boucle do..while une structure switch qui distinguera 4 cas :
switch (pièce)

case 5 : 
// Compter les pièces de 5 cents 
break ; 
case 10 : 
// Compter les pièces de 10 cents 
break ; 
case 20 : 
// Compter les pièces de 20 cents 
break ; 
default : 
printf (« Votre pièce n’est pas autorisée : « ) ;


Pour calculer la somme totale engagée à chaque pièce introduite, la technique est un peu
différente de la précédente. En effet, la somme engagée doit être augmentée non plus du
nombre de pièces introduite, mais de la valeur de la pièce. L’incrément lui aussi n’est plus de
1 mais correspond à la valeur de la pièce. L’instruction d’accumulation est la suivante :
TotalReçu = TotalReçu + pièce ;
Constat :
Ce calcul est réalisé quelle que soit la valeur de la pièce, du coup, on placera l’instruction
en dehors de la structure swich, mais à l’intérieurde la boucle.
Mais attention, pour éviter d’accumuler dans totalReçu la valeur d’une pièce non autorisée, il
nous faut modifier la valeur de la pièce dans l’étiquette default de la structure switchpar
l’instruction :
default : Pièce = 0 ; printf (« pièce interdite« ) ;
Ainsi lorsqu’une « mauvaise » pièce est introduite,la variable pièce prend la valeur 0 afin de
ne pas modifier indûment la variable totalReçu.

  • Troisièmement :

Le prix fixé est il atteint ou dépassé
Quand le montant du prix est atteint, le programme le signale par l’instruction :
printf (« Merci, je vous donne votre boisson ! ») ;
Enfin il nous reste un dernier détail à régler, la détection du trop perçu : on test si la variable
totalReçu dépasse 45, et si tel est le cas, on calcul la monnaie à rendre :
If (totalReçu > 45) 
printf (« et je vous rends : « + ( totalReçu– 45) + « dhs ») ; 


pour voir la correction en langage ç ,envoyer un message sur cette email : yassineennajem68@gmail.com
Merci de votre attention!!

siege auto
شكرا لك ولمرورك