Created
February 11, 2018 22:12
-
-
Save BENALI31/b2a3328e673f2b0dc511bb8185931711 to your computer and use it in GitHub Desktop.
1er projet DUT
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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