* code article: chaîne de 4 caractères commencent obligatoirement par une lettre majuscule, les 3 derniers caractères sont obligatoirement des chiffres. * libelle(le nom d'article) : chaîne 30 * quantité de stock :entier no signé * prix unitaire d'achat : réel * prix unitaire de vente : réel |
| faire un programme qui saisie la liste des articles dans un tableau ( au maximum 150 articles), puis choisir un traitement à faire selon le menu suivant : ************************************************************************ * 1- liste des produits * * 2- liste de produit a commander * * 3- liste des produits représentant le plus Max des bénéfice * ************************************************************************ |
| Notons qu'ont doit commander un article lorsque la quantité en stock est <= 10 une fois qu'une action est réalisée, et tant que l'utilisateur ne choisi pas 4, alors ce dernier peut demander un autre traitement propose par le menu source : newkey.tk Correction : program exercice_3_serie1; uses wincrt; {$m 16384,0,65536} {augmente la memoir du program sans elle p.benefice ne peut pas etre executer} type article=record code:string[4]; libelle:string[30]; qs:word; pa:real; pv:real; end; tab=array[1..150] of article; var n,choix:integer; t:tab; procedure saisie(var t:tab; var n:integer); var i,x,e:integer; begin repeat writeln('saisir n'); readln(n); until (n in [1..150]); for i:=1 to n do with t[i] do begin writeln('l''article num ',i,' est '); repeat writeln('le code premier caractere en majuscule suivit par 3 nombre'); readln(code); val(copy(code,2,3),x,e); until((length(code)=4)and(code[1]in['A'..'Z'])and(e=0)); writeln('saisir la libelle'); readln(libelle); writeln('saisir la quantite de stock'); readln(qs); repeat begin writeln('donner le prix d''achat'); readln(pa); end; until (pa>0); repeat begin writeln('donner le prix de vente'); readln(pv); end; until (pv>pa); end; end; procedure menu; begin gotoxy(10,10); writeln('****************************************************************'); gotoxy(10,11); writeln('* 1- liste des produits *'); gotoxy(10,12); writeln('* 2- liste des produits a commander *'); gotoxy(10,13); writeln('* 3- liste de produits presentant le plus max de benefices *'); gotoxy(10,14); writeln('* 4- quitter *'); gotoxy(10,15); writeln('****************************************************************'); end; procedure affiche(t:tab; n:integer); var i:integer; begin for i:=1 to n do with t[i] do begin writeln('le code est ', code); writeln('le libelle est ', libelle); writeln('la quantite de stock est ',qs); writeln('le prix d''achat est ',pa:9:2); writeln('le prix de vente est ',pv:9:2); end; end; procedure commander(t:tab; n:integer); var j:integer; begin for j:=1 to n do if t[j].qs<=10 then writeln (t[j].libelle); end; function max(t:tab;n:integer):real; var m:real; k:integer; begin m:=t[1].pv-t[1].pa; for k:=2 to n do if t[k].pv-t[k].pa>m then m:=t[k].pv-t[k].pa; max:=m; end; procedure benefice(t:tab; n:integer); var f:integer; begin for f:=1 to n do with t[f] do if pv-pa=max(t,n) then writeln(libelle); end;
{programmen pricipale}
begin saisie(t,n); clrscr; repeat menu; repeat begin writeln('saisir votre choix'); readln(choix); end; until choix in [1..4]; case choix of 1:begin affiche(t,n); readln;clrscr;{on a appeller clrscr pour effacer le contenu de l''ecran} end; 2:begin commander(t,n); readln; clrscr;end; 3:begin benefice(t,n); readln; clrscr; end; 4:begin clrscr; writeln('merci d''avoir utiliser notre programme'); end;end; until choix=4; end. |