• Aucun résultat trouvé

1 Affichage 8 pts. U 20’

N/A
N/A
Protected

Academic year: 2022

Partager "1 Affichage 8 pts. U 20’"

Copied!
4
0
0

Texte intégral

(1)

Nom : ...

Réservé à l’administration :

Prénom : ...

Date de naissance : ... / ... / ... CODE : ...

Auteur: Mohamed Messabihi

Matière: Programmation et structures de données Date14 juin 2016

Durée1h30

Université Abou Bakr Belkaïd - Tlemcen Faculté des Sciences 1èreAnnée MI Semestre 2

Épreuve de rattrapage

Aucun document n'est autorisé

Les appareils portables doivent être éteints et posés sur le bureau du surveillant

1 Affichage 8 pts. U 20’

Qu’affiche le programme ci-dessous ?

1 void Toto(char *P, char c){

2 while (*P)

3 if (*P==c)

4 strcpy(P, P+1) ;

5 else P++;

6 }

7 void main() 8 {

9 int A[5] = {1, 2, 3, 4};

10 char S[10]=" Loou ", T[10] = " LouLou "; 11 int *P, i=0, l;

12 char *R=S;

13 for (P=A; P<A+5; P++) 14 printf("%d\n", *P);

15 l = strlen(S);

16 for (i=l; i<2*l; i++) 17 *(R+i) = *(R+2*l-i-1) ; 18 printf("S = %s\n", S);

19 Toto (T, 'L');

20 printf("T = %s \n", T);

21 printf(" strchr = %s\n", strchr(R, 'u') );

22 }

1 2 3 4 0

S = LoouuooL

T = ouou

strchr = uuool .

2 Gestion d’un magasin (suite) 12 pts. U 1h10

On souhaite écrire un programme qui permet de gérer un magasin vendant des produits élec- troménagers . Ce programme permet, entre autres, de gérer le catalogue du magasin, de créer des commandes et d’établir des factures.

Le catalogue des différents produits stockés dans le magasin est défini comme suit :

1 typedef struct Produit Produit ; 2 struct Produit {

3 int reference;

4 char designation[30];

5 double prixUnitaire; 6 };

7 typedef struct Catalogue Catalogue; 8 struct Catalogue {

9 int nbrProduits;

10 Produit listeProduits[100];

11 };

1/4

(2)

1. Écrire une fonction qui permet d’afficher un produit. 1 pt

Solution

1 void afficher_Produit(Produit p){

2 printf("%d : %s : %.2 f DA\n", p.reference, p.designation, p.prixUnitaire);

3 }

2. Écrire une fonction qui permet d’afficher un catalogue de magasin. 1 pt

Solution

1 void afficher_Catalogue (Catalogue cat){

2 int i;

3 puts(" --- Catalogue ---");

4 for (i=0; i<cat.nbrProduits; i++)

5 afficher_Produit(cat.listeProduits[i]);

6 puts(" ---");

7 }

3. Écrire une fonctionchercher_Referencequi prend en entrée une référence d’un produit et un catalogue et qui affiche le produit correspondant et retourne son indice (position) dans le catalogue. Si le produit n’existe pas dans le catalogue, la fonction affiche "le produit n'existe

pas !"et renvoie -1. 2 pts

Solution

1 int chercher_reference(int ref, Catalogue c){

2 int i=0;

3 while (c.listeProduits[i].reference !=ref && i < c.nbrProduits) i++;

4 if (i < c.nbrProduits) {

5 afficher_Produit(c.listeProduits[i]);

6 return i;

7 }

8 else puts ("Le produit n'existe pas !"); return -1;

9 }

4. Nous définissons la commande d’un client par la structure suivante :

1 typedef struct LigneCommande LigneCommande; 2 struct LigneCommande {

3 int reference; 4 int quantite;

5 };

6 typedef struct Commande Commande; 7 struct Commande {

8 int nbrProduits;

9 LigneCommande lignes[20];

10 };

Écrire une fonction commande_Valide qui renvoie 1 si la la commande est valide et 0 sinon. Une commande est considérée comme valide si tous les produits qu’elle contient existent dans le catalogue et toutes leurs quantités sont supérieurs à zéro. 3 pts

2/4

(3)

Solution

1 int commande_Valide(Commande c, Catalogue cat){

2 int i=0;

3 int valide = 1;

4 for (i=0; i<c.nbrProduits; i++)

5 if (chercher_reference(c.lignes[i].reference, cat) == -1 || c.lignes [i].quantite <=0) valide = 0;

6 return valide; 7 }

5. Á l’occasion du mois de Ramadan, le magasin souhaite offrir des promotions à ces clients. Il applique une réduction de -20% sur tous les produit dont le prix est supérieur à 100000DA, et une réduction de -15% sur tous les articles dont le prix est compris entre 50000 et 99999DA.

Écrire une fonctionacher_Facturequi prend en entrée une commande et un catalogue et affiche la facture à l’écran. Pour chaque référence de produit commandé, la fonction af- fiche sa référence, sa désignation, son prix unitaire, sa quantité dans la commande et le prix total de la ligne. A la fin de la facture, la fonction affiche le montant total à payer. 3 pts L’affichage de cette fonction doit ressembler à celui montré ci-dessous :

--- Facture --- Reference Designation Prix Unitaire Quantite Total Remise

45665 Téléviseur 125000DA 1 125000DA -25000DA

12985 Micro-onde 9850DA 3 29550DA 00DA

87653 Réfrigérateur 86000DA 3 258000DA -38700DA

86509 Cafetière 6500DA 4 26000DA 00DA

--- Montant Total = 374850DA

Solution

1 void afficher_Facture (Commande c, Catalogue cat){

2 int i, k;

3 double montantPayer = 0, double prix_final ; 4 Produit p;

5 puts(" --- Facture ---");

6 puts(" Reference Designation PrixUnitaire quantite Total

Remise ");

7 for (i=0; i<c.nbrProduits; i++) {

8 k = chercher_reference(c.lignes[i].reference, cat);

9 p = cat.listeProduits[k];

10 if (p.prixUnitaire >= 100000)

11 prix_final = p.prixUnitaire*0.8;

12 else if (p.prixUnitaire >= 50000 && p.prixUnitaire <99999) 13 prix_final = p.prixUnitaire*0.85;

14 else prix_final = p.prixUnitaire;

15 printf("%d %s %2. fDA %d %2. fDA %2. fDA \n

", p.reference, p.designation, p.prixUnitaire, c.lignes[i].

quantite, c.lignes[i].quantite*p.prixUnitaire, c.lignes[i].

quantite*(prix_final-p.prixUnitaire) );

16 montantPayer = montantPayer + c.lignes[i].quantite*prix_final;

17 }

18 puts(" ---");

19 printf(" Montant Total = %2. f DA", montantPayer);

20 }

3/4

(4)

6. Écrire une fonctiontrier_cataloguequi permet de trier le catalogue par ordre croissant des

références des produits. 2pt

Solution

1 double trier_Catalogue(Catalogue *cat) 2 {

3 int i = 0;

4 int j = 0;

5 Produit tmp; 6 double med;

7 for(i=0; i<cat->nbrProduits ; i++) 8 for(j=i; j<cat->nbrProduits; j++)

9 if(cat->listeProduits[j].reference<cat->listeProduits[i].

reference){

10 tmp = cat->listeProduits[i];

11 cat->listeProduits[i] = cat->listeProduits[j];

12 cat->listeProduits[j] = tmp;

13 }

14 }

Bon courage ! »

4/4

Références

Documents relatifs

En d´ eduire si le quadruplet est un

Pour étudier le signe du produit en fonction de x, on étudie le signe de chaque facteur puis on dresse un tableau de signes : on utilise la règle des signes d'un produit pour

Aucune des parties MSCI n'emet quelconque affirmation ou garantie, explicite ou implicite, à l'émetteur ou aux propriétaires de ce fonds ou à toute autre personne ou

Le but de cette activité est de justifier que le produit de deux nombres de signes contraires est un nombre négatif et que celui de deux nombres négatifs est un nombre positif..

Le but de cette activité est de justifier que le produit de deux nombres de signes contraires est un nombre négatif et que celui de deux nombres négatifs est un nombre positif..

BELLE NATURE BELLE NATURE BIO POUR TOUS BIO POUR TOUS CROUSTISUD CROUSTISUD CROUSTISUD CROUSTISUD DANIVAL ÉMILE NOËL ÉMILE NOËL GRILLON D’OR JEAN HERVÉ

Dans le corps de Ali ( de quel organe à quel organe)en précisant le nerf sensoriel transmettant le message nerveux.. 4- Indiquer le sens du déplacement du message nerveux moteur

3- Indiquer le sens de déplacement du message nerveux moteur ( de quel organe à quel organe) dans le corps de salma en indiquant le rôle de la moelle