Skip to content

Instantly share code, notes, and snippets.

@BENALI31
Created February 11, 2018 22:12
Show Gist options
  • Save BENALI31/b2a3328e673f2b0dc511bb8185931711 to your computer and use it in GitHub Desktop.
Save BENALI31/b2a3328e673f2b0dc511bb8185931711 to your computer and use it in GitHub Desktop.
1er projet DUT
with ada.text_io; use ada.text_io ;
with ada.integer_text_io; use ada.integer_text_io;
with Ada.IO_Exceptions ; use Ada.IO_Exceptions;
procedure caisse3 is
------ declaration de lenregistrement --------
type enregistrement is record
id : integer ; -- identifiant de lemployer
jour : integer; -- jour de travaille
s: integer ; -- solde
end record;
--------declaration du tableau-----------
max:constant integer:= 100 ; ----- on cosidere la taille max des caisse est 100
type tabemp is array (1..max ) of enregistrement ;
type tableau is array (1..max) of integer;
------------- une fonction de verification -----
function verification (e: enregistrement; tab:in out tabemp;n:integer) return Boolean is
i: integer:=1;
-- max: integer :=100;
existe:Boolean;
begin
existe:=False;
while i < n and existe = False loop
if (tab(i).id= e.id) and (tab(i).jour=e.jour)
then
tab(i):=e;
existe:=True;
end if;
i:=i+1;
end loop;
return(existe);
end verification;
procedure inserer_employer(tab:in out tabemp ;n :in out integer ;e:in enregistrement ) is
i:integer:=1;
begin
i:=n;
while (i>= 1 and then tab(i).id>e.id ) or
( i>=1 and then (tab(i).id=e.id and tab(i).jour>e.jour)) loop
tab(i+1):=tab(i);
i:=i-1;
end loop;
tab(i+1):=e;
n:=n+1;
end inserer_employer;
-- procedure pour afficher le triplet saisie
procedure afficher_trip (tab:in out tabemp;n: in integer) is
i: integer:=1 ;
begin
for i in 1..n-1 loop
put(" identifiant est: ");
put (tab(i).id,2);
new_line;
put("le jour est: ");
put (tab(i).jour,2);
new_line;
put("la recette est : ");
put (tab(i).s,2);
new_line;
end loop ;
end afficher_trip;
---------afficher la recette de la semaine
procedure recette_semai (tab:in out tabemp ;tab2:out tabemp;tab3: out tabemp; p:out integer; n:in integer;e:in enregistrement) is
somme:integer ;
i: integer:=1;
moy: integer:=0;
oc:integer:=1;
j: integer;
begin
p:=0 ;
while i<= n-1 loop
somme:=tab(i).s;
oc:=1;
j:=i;
while j<n and then tab(j).id = tab(j+1).id loop
somme:=somme+ tab(j+1).s;
oc:=oc+1;
j:=j+1;
end loop;
moy:= somme/oc ;
p:=p+1;
if somme > 0 then
tab2(p).s:=somme ;
tab3(p).id:=tab(i).id;
tab2(p).id:=tab(i).id;
else
tab2(p).s:=0;
end if;
i:=j+1;
put("emplyer id =");
put(tab(i-1).id,1);
new_line;
put("la somme de votre recette pour cette semaine est :");
put(somme,1);
new_line;
put("le nombre de jour travailler pour cette semaine est: ");
put(oc,1);
new_line;
put("la moyenne de cette recette/jour pour cette semaine est : ");
put (moy,1);
new_line;
end loop;
end recette_semai;
-- la procedure qui nous permet de trouver lidentifiant du plus petit et du plus grand
procedure id_plus_gros_plus_petit (tab2:in tabemp;tab3:in out tabemp;p:in integer) is
grand_id: integer;
pet_id:integer;
petit_somme:integer;
gros_some:integer;
i:integer:=1;
begin
petit_somme:= tab2(1).s;
gros_some:= tab2(1).s;
grand_id:=tab3(1).id;
pet_id:=tab3(1).id;
for i in 2..p loop
if tab2(i).s<= petit_somme then
pet_id:=tab3(i).id;
end if;
end loop;
i:=1;
while i<p loop
if tab2(i).s>= gros_some then
grand_id:=tab3(i).id;
end if;
i:=i+1;
end loop;
put("lidentifiant du salarie qui a la plus petite somme cette semaine est :");
put (pet_id,0);
new_line;
put("lidentifiant du salarie qui a la plus grosse somme cette semaine est :");
put(grand_id,0);
new_line;
end id_plus_gros_plus_petit;
--la procedure qui trouve la plus grosse somme dans la semaine
procedure petit_gro (tab:in out tabemp;n: in out integer; tab4:in out tableau ;k:in out integer) is
i:integer;
somme_recet:integer;
h:integer;
peti_jour:integer;
grande_jour:integer;
n_jour_g:integer;
n_jour_p:integer;
begin
somme_recet:=0;
h:=1;
k:=6;
--boucle qui daffecte des sommes dans le tableau tab4 du meme jour
while h<=6 loop
somme_recet:=0;
i:=1;
while i<n loop
if tab(i).jour = h then
somme_recet:=somme_recet+tab(i).s ;
end if ;
i:=i+1;
end loop;
tab4(h):=somme_recet;
h:=h+1;
end loop ;
-- la boucle qui nous permet de chercher le jour le plus riche et le plus pauvre
peti_jour:=9999999;
grande_jour:=tab4(1);
i:=1;
for i in 1..6 loop
if tab4(i)>grande_jour then
grande_jour:=tab4(i);
n_jour_g:=i;
end if;
end loop ;
i:=1;
for i in 1..6 loop
if tab4(i)< peti_jour then
peti_jour:=tab4(i);
n_jour_p:=i;
end if ;
end loop;
Put("le jour qui porte la plus grosse recette est : ");
put(n_jour_g,1);
new_line;
Put("le jour qui porte la plus petite recette est : ");
put(n_jour_p,0);
end petit_gro ;
e: enregistrement; -- lenregistrement declarer par e
i: integer:=0;
totale: integer:=0;
tab: tabemp;
tab2:tabemp;
tab3:tabemp;
tab4:tableau;
k:integer:=6;
p:integer;
n: integer:=0;
existe:Boolean;
begin
n:=1;
while i <n loop
-- recuperation de lidentifiant
put_line ("-----------------------cher caissier ---------------- ");
put_line("------------------------bonjour-----------------------");
new_line;
put_line ("taper votre identifiant ");
get(e.id);
while e.id > 0 loop
--- -----------------------recuperation du jour de travaille
put_line("entre le jour de la semaine ");
get(e.jour);
while e.jour < 1 or e.jour>6 loop
put_line("entre le jour de la semaine entre 1 et 6 ");
get(e.jour);
end loop;
---------recuperation du solde
put_line("entrer la somme de la recette ");
get(e.s);
while e.s <0 loop
put_line("entrer la somme de la recette en positif ou nul ");
get(e.s);
end loop;
existe:=verification (e,tab,n);
if existe = True then
put_line("je garde votre dernire saisie ");
else
inserer_employer(tab,n,e);
i:=i+1;
end if;
put_line ("taper lidentifiant suivant");
get(e.id);
if e.id=0 then
put_line ("----------affichage -----------");
afficher_trip(tab,n);
new_line;
put_line ("----------recette_semai -----------");
recette_semai(tab,tab2,tab3,p,n,e);
new_line;
put_line ("---------- id_plus_gros id_plus_petit -----------");
id_plus_gros_plus_petit (tab2,tab3,p);
new_line;
new_line;
put_line ("---------- jour de semaine le plus riche et le plus pauvre -----------");
petit_gro (tab,n,tab4,k) ;
new_line;
put_line ("----------la recette de tout le monde -----------");
i:=1;
for i in 1..n loop
totale := totale + tab(i).s;
end loop;
put_line("la somme de tout les recetes est : ");
put (totale);
new_line;
new_line;
exit ;
end if ;
end loop;if e.id=0 then
exit ;
end if ;
end loop;
end caisse3 ;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment