Mi 1an13 s1 Ex Fin Algo16
Mi 1an13 s1 Ex Fin Algo16
Mi 1an13 s1 Ex Fin Algo16
Réservé à l'administration :
Examen nal
Aucun document n'est autorisé
Les appareils portables doivent être éteints et posés sur le bureau du surveillant
4. Comment déclarer une fonction moysom qui prend en paramètres trois entiers a, b et c et qui
ache leur somme, et renvoie leur moyenne ?
1 a . int moysom ( int a , int b , int c ) ; 2 a
2 b . double moysom ( int a , int b , int c ) ; 2 b
3 c . void moysom ( int a , int b , int c , double moy , int som ) ;
4 d . int , double moysom ( int a , int b , int c ) ; 2 c
2 d
Les appareils portables doivent être éteints et posés sur le bureau du surveillant
Solution
1 void afficherMenu ()
2 {
3 printf ( " \ n ** DISTRIBUTEUR DE BOISSONS **\ n " ) ;
4 printf ( " Faites votre choix et validez !\ n " ) ;
5 printf ( " 1. Cafe noir ...........(30 DA ) \ n " ) ;
6 printf ( " 2. Cafe au lait ........(25 DA ) \ n " ) ;
7 printf ( " 3. The .................(20 DA ) \n " ) ;
8 printf ( " 4. Chocolat au lait ....(35 DA ) \ n " ) ;
9 printf ( " 5. Cappuccino ..........(40 DA ) \n " ) ;
10 printf ( " 0. Annuler \ n" ) ;
11 }
2 Écrire une fonction qui prend en entrée le choix de l'utilisateur (sous forme d'entier) et ache la
boisson sélectionnée puis ache et renvoie le prix à payer (1 pts). Par exemple :
Sélectionnez votre boisson !
4
Vous avez choisi un Chocolat au lait. Merci de payer 35 DA.
Solution
3 Écrire une fonction qui prend en entrée le prix d'une boisson et qui demande à l'utilisateur de
saisir une ou plusieurs pièces de monnaies (5, 10, 20 ou 50) tant que la somme totale des pièces
introduites est inférieur au prix de la boisson. Si la somme totale est supérieur au prix de la
boisson la fonction renvoie le rendu de monnaie sinon elle renvoie 0 (2 pts). Par exemple : si
l'utilisateur a sélectionné un chocolat au lait, on aura l'exécution suivante
Merci d'introduire les pièces de monnaie :
20
10
10
Montant saisi = 40 DA. Rendu = 5 DA. Votre boisson est prête !
Solution
1 int payerBoisson ( int c , int prix )
2 {
3 int total = 0 , rendu = 0 , piece = -1;
4 printf ( " Merci de taper 5 , 10 , 20 ou 50 :\ n " ) ;
5
6 while (( total < prix ) &&( piece !=0) )
7 {
8 scanf ( " % d " , & piece ) ;
9 total = total + piece ;
10 }
11 if ( total >= prix )
12 {
13 rendu = total - prix ;
14
15 }
16 return rendu ;
17 }
4 Écrire une fonction qui permet d'acher le rendu avec le minimum de pièces (2 pts). Par exemple :
si le rendu est 30 DA alors la fonction doit acher 1 pièce de 20DA et 1 pièce de 10DA au lieu de
3 pièces de 10 DA ou 6 pièce de 5 DA, ...
Solution
B [email protected] 2/4 Bon Courage !
1 void afficherRendu ( int rendu )
2 {
3 if ( rendu >=50)
4 {
5 printf ( " % d piece de 50 DA , " , rendu /50) ;
6 rendu = rendu % 50;
7 }
8 if ( rendu >=20)
9 {
10 printf ( " % d piece de 20 DA , " , rendu /20) ;
11 rendu = rendu % 20;
12 }
13 if ( rendu >=10)
14 {
15 printf ( " % d piece de 10 DA , " , rendu /10) ;
16 rendu = rendu % 10;
17 }
18 if ( rendu >=5)
19 {
20 printf ( " une pièce de 5 DA . " ) ;
21 }
22 }
Solution
1
2 void main ( void )
3 {
4 int choix ;
5 int rendu = 0;
6 while ( i !=0)
7 {
8 afficherMenu () ;
9 printf ( " Sélectionnez votre boisson ! " );
10 scanf ( " % d " , & choix ) ;
11 rendu = payerBoisson ( choix , selectionnerBoisson ( choix ) ) ;
12 afficherRendu ( rendu ) ;
13 }
14 }
4. Comment déclarer une fonction moysom qui prend en paramètres trois entiers a, b et c et qui
ache leur somme, et renvoie leur moyenne ?
1 a . int moysom ( int a , int b , int c ) ; 2 a
2 b . double moysom ( int a , int b , int c ) ; b
3 c . void moysom ( int a , int b , int c , double moy , int som ) ;
4 d . int , double moysom ( int a , int b , int c ) ; 2 c
2 d
7 } 2 9
Question Bonus (1pt) : que fait la fonction bouloulou ? La fonction bouloulou permet de
calculer la factorielle d'un entier n passé en paramètre. Il s'agit d'une solution récursive.