Tp informatique

Résolu/Fermé
imen douakha Messages postés 3 Date d'inscription samedi 4 mai 2013 Statut Membre Dernière intervention 4 mai 2013 - Modifié par Chris 94 le 4/05/2013 à 02:28
imen douakha Messages postés 3 Date d'inscription samedi 4 mai 2013 Statut Membre Dernière intervention 4 mai 2013 - 4 mai 2013 à 02:36
slt, j ss une etudiante en 1er anni info. j ai un problem avec un tp d info. ils nous demandent d ecrire un programme pascal
dans une pharmacie tous ls medicaments sont enregistrez dans un fichier ' pharmacie.dat'
chaque medic est caractérisé par un nom, code, nom de laboratoire, sa quntite et son prix
chaque medic possede un code unique .
le mm medic peut etre produit par plusiuers labo
le prgrm doit permettre
1-introduction d un nouveau medic
2-supression d un medic
3- diminuer ou augmenter la quantite existante
4- la recherche du code du medic le moin cher ( a partir de son nom) et afficher son code, labo et son prix
mercii b1 :)
le prgrm est
program pharmacie; 
type medicaments= record 

                                    code,qte: integer; 
                                     nom, n_lab: string[30]; 
                                    prix: real; 
                                    end; 
        stock = file of medicaments ; 

var s:stock ; 
      medi :medicaments; 
      c,q,I:integer; 
      nom: string[30]; 



procedure initialisation ( var s:stock ); 
var m :medicaments; n,i : integer; 

begin 
writeln ( ' Le nombre de medicaments est : '); 
readln (n); 
for i:=1 to n do 
                                      begin 
                                      rewrite(s); 
                                      writeln('           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ '); 
                                      writeln('           ^                                  ^ '); 
                                      writeln('           ^______   STOCK PHARMACIE  _____   ^ '); 
                                      writeln('           ^                                  ^ '); 
                                      writeln('           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ '); 
                                      writeln; 
                                      writeln; 
                                      writeln(' Entrez SVP le nom du medicament '); 
                                      readln (m.nom); 
                                      writeln(' Entrez SVP le nom de laboratoire    '); 
                                      readln (m.n_lab); 
                                      writeln (' Maintement, saisiez SVP le code du medicament '); 
                                      readln (m.code); 
                                      writeln (' Entrez SVP la quantite de medicaments '); 
                                      readln (m.qte); 
                                      writeln (' En fin, introduit le prix du medicament SVP! '); 
                                      readln (m.prix); 
                                      writeln; 
                                      write(s,m); 
                                     
                                      end ; 
  close(s); 
 end; 

function existe (var s: stock ; c : integer):boolean; 
var Ex:boolean; 
      m: medicaments; 

begin 
reset(s); 
ex:=true; 
while (eof(s)=false) and (ex) do 
                                                    begin 
                                                      read(s,m); 
                                                      if( m.code = c) then ex:=false ; 
                                                     end; 
close(s); 
existe:= ex; 
end; 


procedure introduire ( var s:stock ; med: medicaments); 
 var temp: stock; 
     m: medicaments; 

begin 
writeln ( 'Entrez le code de medicament'); 
readln (med.code ); 
writeln ( 'Entrez le nom '); 
readln( med.nom); 
writeln ( 'Entrez le nom de laboratoire '); 
readln (med.n_lab); 
writeln ( 'Entrez le prix'); 
readln (med.prix); 
writeln ( 'Entrez la quantite '); 
readln (med.qte); 
if existe (s, med.code)=true then 
                             begin 
                             assign (temp,'c:\temporaire.dat'); 
                             reset(s); rewrite(temp); 
                             while (eof(s) =false) do 
                                                   begin 
                                                   read(s,m); 
                                                   write(temp,m); 
                                                   end; 
write(temp,med); 
close(s); 
close(temp); 
reset(temp); rewrite(s); 
while (eof(temp) =false) do 
                                      begin 
                                      read(temp,m); 
                                      write(s,m); 
                                      end; 
close (s); close(temp); 
rewrite(temp); close (temp); 
                           end 
else writeln (' Ce medicament existe deja '); 
end; 

procedure supprimer (var s :stock ; c:integer); 
var temp: stock; 
      m:medicaments; 

begin 
assign(temp,'c:\temporaire.dat'); 
if existe(s ,c) =false then 
                                 begin 
                                 reset(s); rewrite(temp); 
                                 while (eof(s)=false) do 
                                                                begin 
                                                                read(s,m); 
                                                                if (m.code<>c)then write(temp,m); 
                                                                end; 
close (s); close (temp); 
reset(temp);  rewrite(s); 
rewrite(temp); close(temp); 
while ( eof(temp)=false) do 
                                      begin 
                                      read( temp,m); 
                                      write( s,m); 
                                      end; 
close(s) ; close(temp); 
rewrite (temp);  close(temp); 

   end; 
end; 

procedure dim_qte (var s:stock ; c,q:integer); 
var temp: stock; 
      m: medicaments; 

begin 

if  (existe (s,c) = false ) then 
                                   begin 
                                   assign( temp,'c:\temporaire .dat '); 
                                   reset( s); rewrite(temp); 
                                   while (eof(s) = false) do 
                                                                         begin 
                                                                          read(s,m); 
                                                                          if (m.code = c) then 
                                                                             if ( m.qte >= q) then m.qte:= m.qte - q ; 
                                                                          write ( temp , m); 
                                                                          end; 
                                   close( s) ; close( temp); 
                                   reset( temp) ; rewrite( s); 
                                   while (eof(temp)= false) do 
                                                                         begin 
                                                                         read ( temp, m); 
                                                                         write (s, m) ; 
                                                                         end; 
                                  close( s);  close(temp); 
                                  rewrite ( temp) ; close(temp); 
                                  end; 

end; 

procedure aug_qte (var s:stock ; c,q: integer ); 
var m : medicaments; 
      temp : stock; 

begin 
assign ( temp, 'c:\temporaire.dat'); 
if existe ( s,c) = false then 
                                  begin 
                                   reset ( s);  rewrite (temp); 
                                   while (eof(s) = false) do 
                                                                       begin 
                                                                       read (s,m); 
                                                                       if (m.code =c) then m.qte := m.qte+ q; 
                                                                       write ( s,m); 
                                                                       end; 
                                 close( s); close(temp); 
                                 reset(temp); rewrite ( s); 
                                 while (eof (temp)=false) do 
                                                                     begin 
                                                                     read( temp,m); 
                                                                     write( s,m); 
                                                                     end; 

                                close(s); close(temp); 
                                rewrite(temp); close(temp); 
                                end; 
end; 


 procedure moins_cher (var s:stock ; nom: string); 
 var m: medicaments ; 
       min_prix: real; 
       lab:string; 
       c:integer; 

begin 
reset (s); 
while (eof(s)=false)  do 
                      begin 
                      read (s,m); 
                      if ( m.nom=nom ) then 
                                       begin 
                                       c:=m.code; 
                                       lab:=m.n_lab; 
                                       min_prix :=m. prix; 
                                       end; 

                      while eof(s) = false do 
                                           begin 
                                           read(s,m); 
                                           if  (m.nom=nom ) then 
                                                            begin 
                                                            if m.prix< min_prix then 
                                                                                begin 
                                                                                min_prix := m.prix; 
                                                                                c:= m.code; 
                                                                                lab:= m.n_lab; 
                                                                                end; 
                                                             end; 
                                           end; 
writeln ('     Le code du medicament est :             ' ,c); 
writeln ('    Le prix du medicament est  : ' ,min_prix); 
writeln ('   Le nom de laboratoire est     :          ' , lab); 
end; 




BEGIN 

assign( s,'c:\pharmacie.dat '); 
initialisation(s); 

writeln; 
writeln ('                 |=============================|  '); 
writeln; 
writeln ('                   _____ TP PHARMACIE 2013 ____   '); 
writeln ; 
writeln ('                 |=============================|  '); 
writeln ; 
writeln ; 
writeln ; 

writeln ('                 Que voulez vouz faire ?! '); 
writeln ('                 1: Introduire un neveau medicament '); 
writeln ('                 2: Supprimer un medicament '); 
writeln ('                 3: Diminuer la quantite d un medecament '); 
writeln ('                 4: Augmenter la quantite d un medicament '); 
writeln ('                 5: Rechercher le medicament le moins cher '); 
writeln ('                 6: Fermer '); 

readln( I); 
case I of 

1: begin 
    introduire( s,medi); 
    end; 

2: begin 
    writeln ('Entrez le code de medicament SVP '); 
    readln (c); 
    supprimer( s,c) 
    end; 

3: begin 
    writeln (' Entrez le code de medicament SVP '); 
    readln (c); 
    writeln (' Entrez la quantite que vous voulez diminuer '); 
    readln (q); 
    dim_qte(s ,c,q); 
    end; 

4: begin 
    writeln (' Entrez le code de mediament SVP '); 
    readln (c); 
    writeln (' Entrez la quantite que vous voulez ajouter '); 
    readln (q); 
    aug_qte(s, c, q); 
    end; 

5: begin 
    writeln(' Entrez SVP le nom de medicament '); 
    readln(nom); 
    moins_cher (s , nom); 
    end; 

readln; 
readln; 
END.  

aidez moi SVP a trouver l erreur !!!!!

4 réponses

Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 325
4 mai 2013 à 02:13
Bonsoir,

CCM ne fait pas les devoirs. Des conseils peuvent être demandés mais il ne faut pas espérer obtenir la solution.

Ceci signifie qu'il n'est pas question que quelqu'un te rédige le programme de tes rêves. Si tu as des soucis dans ton développement, un membre pourra/voudra peut-être t'aider.
0
imen douakha Messages postés 3 Date d'inscription samedi 4 mai 2013 Statut Membre Dernière intervention 4 mai 2013
4 mai 2013 à 02:26
et maintenant est ce que tu peux m aidé !! svp!!
0
Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 325
Modifié par Chris 94 le 4/05/2013 à 02:35
Désolé, je suis modo... pas spécialiste. Il faut patienter.

NB : quand tu rédiges un message, tu as, en haut à droite de la case, quatre symboles :
                          B I S <>
Dans l'ordre, c'est pour écrire en caractères gras, italiques ou soulignés ; le dernier sert à entrer du code en respectant les indentations et alignements. Je l'ai appliqué à ton programme.
0
imen douakha Messages postés 3 Date d'inscription samedi 4 mai 2013 Statut Membre Dernière intervention 4 mai 2013
4 mai 2013 à 02:36
aa d accord. merci b1 :)
0