Sunteți pe pagina 1din 7

PROGRAMAREA CALCULATOARELOR LUCRAREA NR.

RECAPITULARE.
ELEMENTE DE BAZ ALE LIMBAJULUI C
VECTORI. MATRICE. STRUCTURI.

TEMA
ATENIE (precizrile de mai jos sunt valabile pentru toate problemele):
- 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.

Problema nr. 1
La organizarea admiterii la Facultatea de Automatic i Calculatoare se ia n considerare faptul c
pentru nscrierea candidailor vor fi alocate un anumit numr de zile. La sfritul fiecrei zile se comunic la
Rectorat numrul de candidai nscrii n ziua respectiv. Fiecare candidat trebuie s plteasc o tax de
nscriere.

Trebuie s se scrie un program care citete de la tastatur urmtoarele informaii: numrul de zile
n care au avut loc nscrieri i valoarea taxei pe care trebuie s o plteasc un candidat i afieaz aceste
informaii pe monitor conform urmtorului exemplu:

La Facultatea de Automatic i Calculatoare au fost nscrieri n 006 zile i fiecare candidat a pltit o
tax de 150 lei.

De la tastatur se citesc i informaiile referitoare la numrul candidai nscrii n fiecare zi, dup
care se calculeaz suma ncasat n ziua respectiv, se mparte la 1000 i rezultatul se memoreaz ntr-un
vector cu elemente numere reale (de exemplu dac ntr-o zi s-au nscris 123 de candidai, atunci se va
calcula 123 x 150 / 1000 = 18.45 i aceasta este valoarea care se memoreaz n vector). Apoi scrie vectorul
astfel obinut ntr-un fiier al crui nume se citete din fiierul intrare.in (fiecare element va fi scris ntr-un
cmp de cinci caractere cu cte dou zecimale).

n cele 6 zile s-au nscris {14, 25, 273, 189, 74, 23} candidai.

ncasrile n cele 06 zile au fost de:

{ 2.10, 3.75, 40.95, 28.35, 11.10, 3.45} mii lei

Se mai construiete o structur n care stocheaz cteva informaii referitoare la concursul de


admitere i anume: valoarea total a ncasrilor de la concursul de admitere, numrul de zile de nscrieri,
valoarea medie a ncasarilor dintr-o zi. Apoi afieaz informaiile din structur pe monitor.

Pentru a se relaxa i a da puin culoare muncii sale, informaticianul ia cea mai mare valoare mai
mic dect ncasrile din a patra zi i, folosind operatori de lucru pe bit, o rotete la dreapta cu 3 poziii.
Dup aceea afieaz configuraia de bii obinut.

Barem de notare
A1. Funcie de citire a unui vector de la tastatur (vectorul cu numrul de candidai nscrii) i

construirea vectorului cu ncasrile zilnice
A1.1. Scrierea funciei de citire 0,5

1
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 8
A1.2. Apelul corect al funciei din main 0,5
A1.3. Funcionarea corect a funciei la apelul din main 1,0
A2. Funcie de scriere a unui vector ntr-un fiier conform modelului dat n enun
A2.1. Scrierea funciei de scriere 0,5
A2.2. Apelul corect al funciei din main 0,5
A2.3. Funcionarea corect a funciei la apelul din main 1,0
A3. Construirea corect a proiectului format dintr-un fiier header i dou fiiere cod surs 0,25
A4. Citirea numrului de zile de nscriere i a valorii taxei de nscriere 0,25
A5. Scrierea numrului de zile de nscriere i a valorii taxei de nscriere conform modelului
0,25
dat n enun
A6. Rularea programului din linia de comand 0,25
A7. Citirea numelui fiierului de scriere din fisierul intrare.in 0,25
A8. Deschiderea fiierului 0,25
A9. Verificarea deschiderii fiierului 0,25
A10. nchiderea fiierului 0,25
A11. Funcie pentru calcularea valorilor membrilor structurii
A11.1. Calculul sumei totale ncasate la concursul de admitere 0,5
A11.2. Calculul valorii medii a ncasrilor zilnice 0,5
A11.3. Apelul corect al funciei i funcionarea corect a funciei 0,5
A12. Funcie pentru afiarea valorilor stocate n structur (inclusiv apelul corect i funcionarea
0,75
corect a funciei)
A13. Determinarea ntregului care se va roti 0,25
A14. Funcie pentru rotirea la dreapta cu un anumit numr de poziii (inclusiv apelul corect i
0,75
funcionarea corect a funciei)
A15. Funcie pentru afiarea configuraiei bii (inclusiv apelul corect i funcionarea corect a
0,75
funciei)
TOTAL 4 p

2
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 8
Problema nr. 2
n Pdurea cu alune exist o farmacie de la care se pot cumpra n medicamente (n poate fi cel mult
egal cu 30).
Pentru a putea ine o eviden contabil a stocurilor de medicamente din farmacie, contabilul
folosete un program C.
n urma analizei problemei, coordonatorul echipei de programatori a stabilit c n program va exista
o structur, numit STOC, care va avea ca membri numrul de medicamente (un numr ntreg), un vector
de reali care stocheaz preul pentru o cutie de medicamente i un vector de ntregi pentru numrul de
cutii din fiecare medicament.
Datele iniiale se gsesc ntr-un fiier al crui nume se citete de la tastatur.
Programul trebuie s realizeze urmtoarele operaii:
1) s citesc din fiier numele farmaciei care va folosi programul. Numele farmaciei poate conine i
spaii.
2) s citesc din fiier numrul medicamentelor existente n farmacie, precum i numrul de cutii
pentru fiecare medicament
3) s citeasc din fiier preul pentru o cutie din fiecare medicament
4) s afieze pe monitor informaiile citite dup modelul dat mai jos. Preul fiecrui medicament se
va afia ntr-un cmp de 7 caractere cu o zecimal, cmpurile de afiare sunt separate prin dou TAB-uri.

Farmacia "Padurea cu alune" are in stoc 7 tipuri de medicamente.
%\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\%
Tip Cantitate Pret
---- ------------ -----
1 12 14.3
2 21 191.4
3 4 38.5
4 15 8.7
5 0 74.2
6 9 52.4
7 1 24.3
%\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\%

Programul trebuie s fac urmtoarele prelucrri:
a) S determine valoarea total a medicamentelor din farmacie
b) S determine medicamentul cu cel mai mic stoc i valoarea stocului pentru acel medicament
c) S determine valoarea stocului de medicamente de la sfritul lunii martie tiind c
aprovizionarea cu medicamente a farmaciei se face de dou ori pe lun (pe data de 14 i 28 a fiecrei luni)
i c datele citite la pct 1 - 4 reprezint situaia de la nceputul lunii martie.
Se consider c pe data de 14 martie, farmacia a primit
7 2 15 8 21 1 12
cutii de medicamente (valorile de mai sus reprezint numrul de cutii din fiecare medicament primite), iar
pe 29 martie farnacia a primit
8 6 1 15 3 7 0

Cantitile cu care a fost aprovizionat farmacia se citesc de la tastatur, iar rezultatele calculate se
afieaz pe monitor.
Numele programului este farmacie.

Barem de notare
A1. Citirea numelui fiierului de la tastatur (cu funcia fgets), deschiderea fiierului i
0,75
verificarea deschiderii corecte
A2. Declararea structurii STOC. 0,25
A3. Citirea din fiier a numelui farmaciei. 0,25
A4. Citirea din fiier a numrului de medicamente (folosind funciile fgets i sscanf). 0,5

3
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 8
A5. Citirea din fiier a vectorului care conine numrul de cutii din fiecare medicament. 0,25
A6. Citirea din fiier a vectorului aferent preturilor fiecrui medicament. 0,25
A7. Integrarea operaiilor de la punctele A4 - A6 ntr-o funcie care returneaz o structur de tip
0,5
STOC.
A7a. Apelarea corect a funciei scrise la punctul A7 0,25
A8. Scrierea pe monitor a informaiilor citite dup modelul dat la punctul 4 din enun. Funcia
primete ca parametri o structur de tip STOC i un vector de caractere (pentru numele 0
farmaciei) i nu returneaz nimic.
A8a. Scrierea numelui farmaciei. 0,25
A8b. Scrierea conform modelului a informaiilor referitoare la medicamentele din
0,5
farmacie.
A8c. Apelul corect al funciei de scriere. 0,25
A9. nchiderea corect a fiierului cu care se lucreaz. 0,25
A10, Prelucrarea indicat la punctul a) 0,5
A10a. Scrierea prototipului funciei care permite returnarea rezultatului dorit 0,25
A10b. Apelarea corect a funciei 0,25
A11. Prelucrarea indicat la punctul b) 0,75
A11a. Scrierea prototipului funciei care permite returnarea rezultatului dorit 0,25
A11b. Apelarea corect a funciei 0,25
A12. Prelucrarea indicat la punctul c) (citirea valorilor cu care a fost aprovizionat farmacia se
0,5
face cu aceeai funcie cu care s-a citit valoarea iniial a stocului)
A12a. Scrierea prototipului funciei care permite returnarea rezultatului dorit 0,25
A12b. Funcie pentru suma a doi vectori 0,5
A12b. Apelarea corect a funciei 0,25
A13. Afiarea pe monitor a rezultatelor prelucrrilor 0,75
A13a. Folosirea unei funcii pentru afiare 0,25
A14. Integrarea funciilor scrise ntr-un program funcional 1
TOTAL TABEL 10

4
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 8
Problema nr. 3
n pdurea cu alune un pitic ntreprinztor deschide un lan de magazine n care vinde diferite
sorturi de coloniale (cafea, ceai i mirodenii). Pentru c afacerea i merge din plin, piticul reuete s
deschid un numr de n magazine. n fiecare magazin vinde m sorturi de coloniale. La un moment dat,
piticul face inventarul magazinelor sale i noteaz, pentru fiecare magazin, ce cantitate din fiecare sort de
coloniale exist (cantitile sunt numere reale).
Pentru c piticul negustor se pricepe la programare, el scrie un program i introduce de la tastatur
cantitile de coloniale gsite la inventar. Pentru a verifica dac a introdus corect datele, el afieaz pe
monitor rezultatul inventarului, iar apoi scrie ntr-un fiier numrul de magazine, numrul de sorturi de
coloniale i cantitile gsite la inventar.
Piticul mai construiete o structur n care stocheaz cteva informaii referitoare la lanul su de
magazine i anume: cantitatea total de coloniale pe care o are, cantitatea medie de coloniale din fiecare
magazin i numrul de magazine din lan. Apoi afieaz informaiile din structur pe monitor.
Piticul rotunjete cantitatea total de coloniale (care este un numr real) la cel mai apropiat ntreg
mai mare dect valoare calculat i, folosind numai operatori de lucru pe bit, calculeaz paritatea
numrului astel obinut (ATENIE! NU se verific dac un numr este par sau impar), seteaz bitul de
paritate i afieaz configuraia de bii rezultat.

Barem de notare
A1. Funcie de citire a unei matrice de la tastatur. 0
A1.1. Scrierea funciei de citire 0,5
A1.2. Apelul corect al funciei din main 0,5
A1.3. Funcionarea corect a funciei la apelul din main 1,0
A2. Funcie de scriere a unei matrice (pe monitor i n fiier) 0
A2.1. Scrierea funciei de scriere 0,5
A2.2. Apelul corect al funciei din main 0,5
A2.3. Funcionarea corect a funciei la apelul din main 1,0
A3. Construirea corect a proiectului format dintr-un fiier header i dou fiiere cod surs 0,25
A4. Citirea numrului de magazine i a numrului de sorturi de coloniale. 0,25
A5. Scrierea numrului de magazine i a numrului de sorturi de coloniale 0,25
A6. Rularea programului din linia de comand 0,25
A7. Citirea numelui fiierului de la tastatur 0,25
A8. Deschiderea fiierului 0,25
A9. Verificarea deschiderii fiierului 0,25
A10. nchiderea fiierului 0,25
A11. Funcie pentru calcularea valorilor membrilor structurii 0
A11.1. Calculul cantitii totale de coloniale 0,5
A11.2. Calculul cantitii medii de coloniale din fiecare magazin 0,5
A11.3. Apelul corect al funciei i funcionarea corect a funciei 0,5
A12. Funcie pentru afiarea valorilor stocate n structur (inclusiv apelul corect i funcionarea
0,75
corect a funciei)
A13. Determinarea ntregului pentru care se va determina paritatea 0,25
A14. Funcie pentru determinarea i setarea paritii (inclusiv apelul corect i funcionarea
0,75
corect a funciei)
A15. Funcie pentru afiarea configuraiei bii (inclusiv apelul corect i funcionarea corect a
0,75
funciei)
TOTAL 10 p

5
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 8
Problema nr. 4
Intr-un ora fermecat toate cldirile sunt aliniate perfect ntr-o reea de form dreptunghiular.
Cldirile au nlimi diferite. Cldirile sunt aliniate pe n rnduri i m coloane.
O firm de IT trebuie s scrie un program care s calculeze impozitul aferent fiecrei cldiri.
Programul permite introducerea de la tastatur a numelui oraului (nume care poat s conin i spaii),
numrul de rnduri i de coloane pe care sunt repartizate cldirile. Programul nu va fi folosit doar de un
singur ora, ci i de alte orae ce au dimensiuni diferite. De asemenea, se introduce de la tastatur numarul
de etaje (numr ntreg) pentru fiecare cldire n parte. Pentru ca oraul este fermecat, impozitul se pltete
n funcie de numrul de etaje al fiecrei cldiri. Valoarea impozitului pentru un etaj este aceeai pentru
toate cldirile, se citete de la tastatur i este un numr real.
Pentru a avea o situaie de ansamblu a sumelor ce trebuie pltite de fiecare administrator de cldire,
programul trebuie s genereze o alt matrice n care se pstreaz suma datorat de fiecare cldire n parte.
Programul trebuie s mai construiasc o structur care s memoreze: 1. Impozitul total pe ntreg
oraul. 2. Poziia cldirii ce are de pltit cel mai mare impozit. 3. Numrul de cldiri ce au mai mult de 10
etaje.
Att datele de intrare ct i cele calculate trebuie scrise ntr-un fiier de ieire cu urmtorul format:

Oraul Orasul Programat are 10 cldiri dispuse pe 2 linii i 5 coloane.
Numarul de etaje al cldirilor este:
2 5 6 9 12
10 34 65 3 1
Impozitul pentru fiecare etaj fiind de 10.3 lei, suma datorat de fiecare
cldire este:
20.6 51.5 61.8 92.7 123.6
103.0 350.2 669.5 30.9 10.3
Impozitul total incasat este 1515.1.
Cldirea cu impozitul cel mai mare se gaseste la coordonatele 1,2.
Numarul de cladiri mai inalte de 10 etaje este 3.

Barem de notare
A1. Citirea numelui oraului (numele poate s conin i spaii) 0,25
A2. Citirea numrului de rnduri i a numrului de cldiri pe rnd 0,25
A3. Funcie de citire de la tastatur a matricei cu numrul de etaje 0
A3.1. Scrierea funciei de citire 0,25
A3.2. Apelul corect al funciei din funcia apelant 0,25
A3.3. Funcionarea corect a funciei la apelul din funcia apelant 0,5
A4. Funcie de generare a matricei cu sumele datorate 0
A4.1. Scrierea funciei de generare 0,25
A4.2. Apelul corect al funciei din funcia apelant 0,25
A4.3. Funcionarea corect a funciei la apelul din funcia apelant 0,5
A5. Deschiderea fiierului n care se vor scrie datele (cu verificarea deschiderii) 0,5
A6. Funcie de scriere n fiier a informaiilor citite 0
A6.1. Scrierea funciei de scriere a tuturor datelor n fiier !!! o singur funcie care scrie toate
0,5
informaiile !!!
A6.2. Apelul corect al funciei din main 0,5
A6.3. Funcionarea corect a funciei la apelul din main 0,75
A6.4. Nerespectarea formatului de scriere (se scad 0.5 pct) 0
A7. Construirea corect a proiectului format dintr-un fiier header i dou fiiere cod surs 0,25
A8. Rularea programului din linia de comand 0,25
A9. O singur Funcie pentru calcularea valorilor membrilor structurii i care apeleaz alte funcii de calcul: 0

6
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 8
A9.1. Calculul impozitului total (ntr-o funcie) 0,5
A9.2. Identificarea poziiei cldirii pentru care s-a ncasat cel mai mare impozit (ntr-o funcie) 0,5
A9.3. Calculul numrului de cldiri mai inalte de 10 etaje (ntr-o funcie) 0,5
A9.4. Folosirea structurii cerute 0,5
A9.5. Apelul corect al funciei i funcionarea corect a funciei 0,5
A10. Declarea structurii folosite n program 0,25
A11. Funcie pentru scrierea n fiier a valorilor stocate n structur (inclusiv apelul corect i funcionarea
0,75
corect)
A11.1. Nerespectarea formatului de scriere (din model) (se scad 0.5 pct) 0
A12. nchiderea fiierului folosit 0,25
A13. Punct din oficiu 1
TOTAL 10 p

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