0% ont trouvé ce document utile (0 vote)
718 vues9 pages

Les Tableau Pascal

Ce document décrit un problème de gestion de stock dans un magasin à l'aide de tableaux. Il présente sept questions sur la manipulation de ces tableaux, notamment le remplissage, la modification, l'affichage, la suppression et l'ajout d'articles.

Transféré par

Lachi.R
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
718 vues9 pages

Les Tableau Pascal

Ce document décrit un problème de gestion de stock dans un magasin à l'aide de tableaux. Il présente sept questions sur la manipulation de ces tableaux, notamment le remplissage, la modification, l'affichage, la suppression et l'ajout d'articles.

Transféré par

Lachi.R
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 9

TS informatiques option Bases de données INSFP de TIZI-

OUZOU

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 :
1-
program 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

Vous aimerez peut-être aussi