TS informatiques option Bases de données OUZOU

INSFP de TIZI-

Algorithmique Devoir du semestre 2
Durée 2hs Problème : Pour gérer les ventes dans un magasin, le responsable utilise les tableaux comme suit : – Un tableau REF qui contient les références des articles. REF[i] représente la référence d’un article. Sachant que la référence d’un article est une chaine de 3 caractères. Exemple A12 ,B04,A10 – Un tableau PRIX qui contient les prix des articles. PRIX[i] représente le prix de l’article REF[i]. Questions : 1- Ecrire un programme qui remplit les deux tableaux. Supposons que le magasin dispose de 100 articles. 2- Ecrire la séquence d’instructions qui permet d’afficher le menu déroulant suivant à l’utilisateur : Gestion des ventes A : Modifier le prix d’un article B : Afficher le prix d’un article donné. C : Calculer le prix total d’une commande. D : Supprimer un article E : Ajouter un article F : Terminer Votre choix (SVP) : 3- Ecrire la séquence d’instructions qui permet de modifier le prix d’un article connaissant sa référence. 4- Ecrire la séquence d’instructions qui permet d’afficher le prix d’un article connaissant sa référence. 5- Ecrire la séquence d’instructions qui permet de calculer le prix total d’une commande. Voici un exemple d’exécution : Commande : Entrez les références des articles commandés terminez la saisie par Z: Référence : A12 Quantité : 10 Référence : A14 Quantité : 200 Référence : Z Le montant de la commande est : ****** 6- Ecrire la séquence d’instructions qui permet de supprimer un article connaissant sa référence. (le suppression d’une référence entraine la suppression de son prix) . un article supprimé sa référence est remplacée par ‘ ‘ (espace) et son prix par 0. 7- Ecrire la séquence d’instructions qui permet d’ajouter un article (ajouter sa référence et son prix) sachant qu’on ne doit pas ajouter un article qui existe déjà.

Devoir d’Algorithmique S2

Page 1

Corrigé type :
1program gestion_vente; uses wincrt; Var REF : array [1..5] of string[3];(* une référence est sur 3 caractère*) PRIX : array [1..5] of real;(* le prix est soit entier ou réel*) (* les deux tableaux ont la même taille *) i,qt:integer; terminer,found : boolean; choix:char; Vref : string[3]; som:real; Begin (* programme principal*) (* 1- remplissage des tableau *) (* remplissage du tableau REF *) For i := 1 to 5 do begin write('Tapez la référence du ',i,' article: '); readln(REF[i]); end; (* Remplissage du tableau PRIX*) For i := 1 to 5 do begin write('Tapez le prix de l''aticle ', REF[i],': '); readln(PRIX[i]); end; (***************************************************************) (** le menu déroulant **) Terminer := false; While Not terminer do (* est équivalent à while terminer = false *) Begin (* while*) Clrscr; (* effacer l'écaran*) Writeln;writeln;writeln;writeln; (* sauter des lignes*) Writeln (' Gestion des ventes '); writeln;writeln;writeln; Writeln(' A : Modifier le prix d''un article'); Writeln(' B : Afficher le prix d''un article donné'); Writeln(' C : Calculer le prix total d''une commande'); Writeln(' D : Supprimer un article'); Writeln(' E : Ajouter un article'); writeln(' F : Afficher les article avec leurs prix'); Writeln(' G : Terminer'); writeln;writeln; writeln; write (' Votre choix SVP: '); (* je contrôle la saisie le choix doit être = à Aou B ou Cou D ou E ou F*) repeat readln(choix); Until (upcase(choix) = 'A') or (upcase(choix) = 'B')or(upcase(choix) = 'C') or (upcase(choix) = 'D')or (upcase(choix) = 'E')or(upcase(choix) = 'F'); Case upcase(choix) of 'A':Begin end; 'B':begin end; 'C':Begin end; 'D':begin Devoir d’Algorithmique S2 Page 2

end; 'E':Begin 'F':Begin end; end; 'G':Begin terminer := true (*arreter la boucle*) donewincrt; end; end; end;(*while*) end.(*programme principal*) Jeu de test :

(****** Afficher pour chaque article son prix ********) 'F':Begin clrscr; Writeln;writeln;writeln; writeln (' Liste des articles avec leurs prix:'); writeln;writeln; Devoir d’Algorithmique S2 Page 3

writeln(' Référence Prix'); For i:= 1 to 5 do writeln(' ',REF[i],' ',PRIX[i]:10:2); writeln;writeln('Tapez une touche pour continuer'); readkey; end;

(******************************************************************************) (*modifier le prix d'un article *) 'A':Begin clrscr; writeln(' *** Modifier le prix d''un article ****'); writeln;writeln; (*sauter deux ligne*) write(' Tapez la référence de l''article:'); readln(Vref); (* je recherche d'abord l'article dans REF pour réccuperer l'indice avec*) (* lequel je vais acceder au tableau PRIX et modifier le prix corespondant*) found := false; i := 1; While (not found) and (i <= 5) do if REF[i] = Vref then found := true else i := i+1; if not found then (* le recherche est négative*) begin writeln ('L''article n''existe pas. '); readkey; end else (*la recherche est positive, l'article existe à l'indice i*) begin write(' Tapez le nouveau prix SVP puis validez: '); readln(Prix[i]); writeln;writeln;writeln; writeln(' Le prix a été changé, tapez une touche pour continuer'); readkey; end; end; Jeu d’essai :

Devoir d’Algorithmique S2

Page 4

(********************************************************************************) (************** Afficher le prix d'un article donné **) 'B':begin clrscr; Writeln;writeln;writeln(' Afficher le prix d''un article'); Writeln;writeln; Write(' Tapez la référence SVP: '); readln(Vref); (* je recherche d'abord l'existence de l'article *) found := false; i := 1; While (not found) and (i <= 5) do if REF[i] = Vref then found := true else i := i+1; if not found then (* le recherche est négative*) begin writeln ('L''article n''existe pas. '); readkey; end else (*la recherche est positive, l'article existe à l'indice i*) begin writeln;writeln; writeln(' Le prix de l''artcle est : ',PRIX[i]:10:2,' DA'); writeln;writeln;write('Tapez une touche pour continuer'); readkey; end; end; Jeu d’essai:

Devoir d’Algorithmique S2

Page 5

(************** Supprimer un article ************************) 'D':begin clrscr; clrscr; Writeln;writeln;writeln(' Supprimer un article'); Writeln;writeln; Write(' Tapez la référence SVP: '); readln(Vref); (* je recherche d'abord l'existence de l'article *) found := false; i := 1; While (not found) and (i <= 5) do if REF[i] = Vref then found := true else i := i+1; if not found then (* le recherche est négative*) begin writeln ('L''article n''existe pas. '); readkey; end else (*la recherche est positive, l'article existe à l'indice i*) begin writeln;writeln; REF[i] := ' '; Prix[i] := 0; writeln;writeln;write('L''article a été supprimé. Tapez une touche pour continuer. '); readkey; end; end;

Jeu d’essai

Devoir d’Algorithmique S2

Page 6

L’affichage du tableau donne

(**************** Ajouter un article **************) 'E':Begin clrscr; clrscr; Writeln;writeln;writeln(' Ajouter un article'); Writeln;writeln; Write(' Tapez la référence SVP: '); readln(Vref); (* je recherche d'abord l'existence de l'article *) found := false; i := 1; While (not found) and (i <= 5) do if REF[i] = Vref then found := true else i := i+1; if found then (* le recherche est positive*) begin writeln ('L''article existe déjà. Tapez une touche pour continuer '); readkey; end else (*la recherche est négative, l'article n'existe pas*) begin (* je vais rechercher une case vide *) i := 1; While (REF[i] <> ' ') and (i <= 5) do i := i +1; (*soit je sort avec ref[i] = ' ' ou i = 6*) if i = 6 then begin writeln;writeln('le Tableau est plein. Taper une touche pour continuer'); readkey end else if ref[i] = ' ' then begin REF[i] := Vref; Writeln;Writeln(' Taper son prix SVP: '); readln(PRIX[i]); writeln;writeln;write('L''article a été ajouté. Tapez une touche pour continuer. '); readkey; Devoir d’Algorithmique S2 Page 7

end; end; end; Jeu d’essai Soit l’affichage :

Après la suppression d’un élément soit l’article A03:

On ajoute un article :

A l’affichage :

Devoir d’Algorithmique S2

Page 8

(*************** le prix total d'une commande ******************) 'C':Begin clrscr; writeln(' Calcul du prix total d''une commande '); writeln;writeln('Commande:'); writeln('Entrez les références des articles commandés et terminez par Z'); write(' Référence: '); readln(vref); som := 0; while vref <> 'Z' Do begin i := 1; while REF[i] <> vref do (* on suppose que les références existent*) i := i +1; write(' Quantité: '); readln(Qt); som := som + PRIX[i] * qt; write(' Référence: '); readln(Vref); end; writeln;writeln; writeln(' Le total de la commande est ',som:10:2,' DA'); writeln; writeln('Tapez une touche pour revenir au menu principal'); readkey; end;

Devoir d’Algorithmique S2

Page 9

Sign up to vote on this title
UsefulNot useful