(***** TP6exc2 : une solution *****)
PROGRAM Affaire ;

USES Crt;

CONST
NbProd = 2;
NbRep = 3;

VAR
ListeProd : Array[1..NbProd] of String[15];
ListeRep : Array[1..NbRep] of String[15];
ListeAchat : Array[1..NbRep,1..NbProd] of integer;
ListePrix : Array[1..NbProd] of real;
i,j : integer ;
Chx : integer ;
maxmin,tmp : real ;

PROCEDURE InitNoms ;
Begin
ClrScr;
Writeln('Entrez le nom de vos produits ; entre deux noms, tapez [ENTER]');
For i:=1 to NbProd do
   Begin
   Write('Produit nø',i,' ');
   Readln(ListeProd[i]);
   End;
ClrScr;
Writeln('Entrez le nom de vos repr‚sentants ; entre deux noms, tapez [ENTER]');
For i:=1 to NbRep do
   Begin
   Write('Rep nø',i,' ');
   Readln(ListeRep[i]);
   End;
ClrScr;
Writeln('Entrez le prix de vos produits ; entre deux prix, tapez [ENTER]');
For i:=1 to NbProd do
   Begin
   Write('Prix de ',ListeProd[i],' ');
   Readln(ListePrix[i]);
   End;
End;

PROCEDURE Commandes;
Begin
ClrScr;
Writeln('Liste des commandes : entrez le nombre de produits achet‚s par chaque Rep.');
Writeln('Entre deux commandes, tapez [ENTER]');
For i:=1 to NbRep do
    For j:=1 to NbProd do
    Begin
    Writeln('Combien ',ListeRep[i],' a-t-il achet‚ de ',ListeProd[j],' ?');
    Readln(ListeAchat[i,j]);
    End;
End;

PROCEDURE ZoomRep;
Begin
Writeln('Quel repr‚sentant voulez-vous afficher ?');
For i:=1 to NbRep do Writeln('[',i,'] ',ListeRep[i]);
Readln(chx);
ClrScr;
Writeln('Chiffres d''affaire de ',ListeRep[chx] );
For i:=1 to NbProd do Writeln(ListeProd[i]:16);
For i:=1 to NbProd do Writeln(ListeAchat[Chx,i]*ListePrix[i]:16:4);
End;

PROCEDURE ZoomProd;
Begin
Writeln('Quel produit voulez-vous afficher ?');
For i:=1 to NbProd do Writeln('[',i,'] ',ListeProd[i]);
Readln(chx);
ClrScr;
Writeln('Chiffres d''affaire de ',ListeProd[chx] );
For i:=1 to NbProd do Writeln(ListeRep[i]:16);
For i:=1 to NbProd do Writeln(ListeAchat[i,chx]*ListePrix[i]:16:4);
End;

PROCEDURE Prime;
Begin
maxmin:=0;
chx:=0;
For i:=1 to NbRep do
    Begin
    tmp:=0;
    For j:=1 to Nbprod do tmp:=tmp+listeprix[i]*listeAchat[i,j];
    If tmp>maxmin then
        Begin
        maxmin := tmp ;
        chx:=i;
        End;
    End;
Writeln('Vous pouvez r‚compenser ',ListeRep[chx]);
End;

PROCEDURE Mauvais;
Begin
maxmin:=1E10;
chx:=0;
For i:=1 to NbProd do
    Begin
    tmp:=0;
    For j:=1 to NbRep do tmp:=tmp+listeprix[i]*listeAchat[j,i];
    If tmp<maxmin then
        Begin
        maxmin := tmp ;
        chx:=i;
        End;
    End;
Writeln('Vous pouvez ‚liminer ',ListeProd[chx]);
End;

BEGIN
InitNoms;
Commandes;
Repeat
    Writeln('Quel est votre choix ?');
    Writeln('[0] Quitter');
    Writeln('[1] D‚tail d''un repr‚sentant');
    Writeln('[2] D‚tail d''un produit');
    Writeln('[3] Meilleur vendeur');
    Writeln('[4] Pire produit');
    Readln(chx);
    Case chx of
        1 : ZoomRep;
        2 : ZoomProd;
        3 : Prime;
        4 : Mauvais;
        End;
    Readln;
    Until chx=0;
END.

(*******************)