Sunteți pe pagina 1din 1

Programarea calculatoarelor ________________________________________________________________ Nr.

1 P2
O firm deine mai multe magazine alimentare. Firma, prin magazinele sale, comercializeaz un numr de m produse
alimentare preambalate.
S se scrie un program pentru a ine evidena produselor comercializate de firm. n acest program sunt folosite informaii
referitoare la firm care sunt stocate ntr-o structur i anume: numele firmei (printr-un pointer la caracter, numele firmei poate avea
i spaii), numrul de magazine i numrul de produse alimentare comercializate (doi ntregi fr semn) i preurile produselor
(printr-un pointer la real n dubl precizie). Informaiile referitoare la stocurile de produse alimentare sunt stocate printr-un pointer
la pointer la ntreg fr semn, acest pointer NU este membru al structurii menionate mai sus.
Toate datele de intrare sunt citite dintr-un fiier care este dat ca argument al liniei de comand.
n funcie de argumentele din linia de comand se pot face urmtoarele prelucrri:
m se afieaz valoarea total a mrfii deinut de firm;
a se ordoneaz i afieaz matricea stocurilor alimentare n ordinea cresctoare a stocului total din fiecare magazin.
Opiunea h afieaz pe monitor un mesaj de help (ce face programul i care este forma liniei de comand). Prezena numelui
fiierului este obligatorie n linia de comand. Dac numele fiierului nu este dat n linia de comand atunci programul va afia un
mesaj de eroare i se va ncheia.
Opiunea implicit este m.
Forma liniei de comand: ./firma in.dat [-a][-m][-h]
Apelarea funciilor necesare pentru cele dou prelucrri se va face prin intermediul pointerilor la funcii.

Barem de notare
A1. Funcie de citire a informaiilor referitoare la firma (funcia are ca parametru fiierul din care se citesc datele
fiierul va fi deschis n main-) i returneaz un pointer la structura cu informaiile despre firm.
A1.1. Scrierea funciei de citire 0.25
A1.2. Citirea numelui firmei (care poate conine spaii) 0.25
A1.3. Citirea numrului de magazine i a numrului de produse 0.25
A1.4. Citirea preurilor produselor alimentare (funcie care returmeaz pointer) i apelul corect al funciei 0.25
A1.5 Alocare pentru pointer la caracter i pointer la real cu spaiul strict necesar 0.25
A1.6 Alocare pentru pointer la structur cu spaiul strict necesar 0.25
A1.7. Apelul corect al funciei de citire (a tuturor informaiilor) din main 0.25
A1.8. Funcionarea corect a funciei la apelul din main 0.25
A2. Funcie de citire a stocurilor de alimente (funcia primete ca parametri fiierul din care se citesc datele, un
0
pointer la strucur i returneaz un pointer la pointer)
A2.1. Scrierea funciei de citire a stocurilor de alimente 0.25
A2.2. Alocare pentru pointer la pointer (cu spaiul strict necesar) 0.25
A2.3. Apelul corect al funciei de citire din main 0.25
A2.4. Funcionarea corect a funciei la apelul din main 0.25
A3. Funcie de afiare a informaiilor despre firm pe monitor 0
A3.1. Scrierea funciei de afiare 0.25
A3.2. Apelul corect al funciei din main 0.25
A3.3. Funcionarea corect a funciei la apelul din main 0.25
A4. Construirea corect a proiectului; definirea corect a variabilelor cu care se lucreaz 0.25
A5. Deschiderea fiierului, verificarea deschiderii i nchiderea fiierului cu care s-a lucrat 0.25
A6. Funcie pentru calculul valorii totale a mrfii, apelul corect din main (prin pointer la funcii) i funcionarea corect
1.25
(funcia are ca parametru un pointer la structur i un pointer la pointer)
A7. Funcie pentru ordonarea matricei, apelul corect din main (prin pointer la funcii) i funcionarea corect (funcia
1.5
are ca parametru un pointer la structur i un pointer la pointer)
A8. Eliberarea zonelor de memorie alocate 0.25
A9. Analiza liniei de comand 0
A9.1 Identificarea fiierului cu care se lucreaz 0.5
A9.2 Identificarea opiunilor de prelucrare 0.5
A9.3 Tratarea inexistenei fiierului i afiarea mesajului de help 0.5
A10. Folosirea pointerilor la funcii pentru apelarea funciilor de prelucrare 0.75
A11. Funcie pentru afiarea rezultatelor prelucrrilor, apelul corect din main i funcionarea corect la apelul din
0.5
main
TOTAL 10 p

ATENIE (precizrile de mai jos sunt valabile pentru ambele probleme):


- o funcie scris i neapelat va fi punctat cu 0 (zero) puncte
- programele la care apare mesajul Segmentation fault sunt considerate programe cu erori i vor fi notate cu 0 (zero)
puncte
- programele cu erori (fatale sau de atenionare Warnings - ) vor fi notate cu 0 (zero) puncte
- nerespectarea enunului problemei sau a baremului conduce la notarea cu 0 (zero) a programului scris, indiferent
dac acesta are sau nu erori, funcioneaz sau nu.

2 din 2

S-ar putea să vă placă și