Sunteți pe pagina 1din 11

1.

Evaluare expresii
Se cere s se evalueze o expresie aritmetic compus din operatori (+,-,/,*),
operanzi (numere ntregi) i paranteze folosind forma polonez.

Se vor implementa urmtoarele:


clasa template Stiva
clasa template Coada
clasa Lexema i clasele derivate Operator i Operand
funciile:
o Coada Lexer(string) transform irul primit ntr-o coad de lexeme
o Coada FormaPolonez(Coada&) rescrie irul n forma polonez
o int Evaluare(Coada&) evalueaz expresia scris n forma polonez

2. Planificarea proceselor
Se consider o list de procese pentru care proces se cunosc: prioritatea (0
minima, 5-maxim), durata (n numr de cuante de timp) i denumirea. Procesele sunt
memorate ntr-un fiier text, cte unul pe fiecare linie n formatul: prioritate
durata denumire.

Procesele sunt planificate pentru execuia pe procesor dup urmtoarele reguli:


procesele cu prioritate mai mare se execut naintea proceselor cu o prioritate
mai mic
procesele cu aceeai prioritate se execut dup modelul Round Robin (fiecare
proces este executat pe durata unei cuante de timp dup care este reintrodus la
sfritul cozii de ateptare)
Se cere s se afieze pe ecran planificarea proceselor.

Se vor implementa:
clasa template CoadaPrioritate care implementeaz o coad n care disciplina
de extragere a elementelor este dat de prioritatea acestora (compararea
prioritilor se face folosind operatorul <)
clasa Proces care va conine informaiile referitoare la un proces
Funcia pentru citirea datelor din fiier
Funcia pentru planificarea proceselor
Programul principal pentru testarea aplicaiei

3. Implementare stive
Stivele sunt structuri de date care permit stocarea datelor i prelucrarea
acestora dup ordinea ultimul venit primul servit. Implementarea acestora se poate
realiza n mai multe moduri. Pentru exemplificare se vor construi urmtoarele:
clasa de baz abstract Stiva (clas template) care conine declaraiile
operaiilor de baz
clasa derivat StivaVector care implementeaz operaiile folosind un vector
redimensionabil alocat dinamic
clasa derivat StivaLista care implementeaz operaiile folosind o structur
dinamic de tip list simplu nlnuit
funcia void TestareStiva(Stiva& stiva) care simuleaz un numr mare de
operaii pe stiv
Se cere s se msoare timpii necesari prelucrrilor simulate de funcia
TestareStiva pentru cele dou implementri.

4. Vectori specializai

S se implementeze clasa template Vector care s respecte urmtoarele cerine:


vectorul este stocat n memorie alocat dinamic i are lungime variabil
implementeaz operaiile: adugare, tergere elemente i sortare vector
operatori pentru referire elemente, comparare i concatenare de vectori
subclasa Iterator care conine:
o operatorul * pentru obinerea valorii elementului curent
o operatorul ++ pentru avansarea n vector
o operatorul ! pentru testarea sfritului de vector
metod pentru obinerea unui iterator la nceputul vectorului

Pentru clasa Vector se va implementata o specializare pentru tipul bool.


Aceasta va folosi pentru stocare un vector de ntregi fr semn, iar fiecare element va
fi stocat pe un bit.
Clasa se va testa pentru obiecte de tip Persoana i pentru elemente de tip bool.

5. Tabele de dispersie
Tabelele de dispersie sunt structuri de date care permit regsirea foarte rapid
a informaiilor. Acestea sunt construite pe baza unei funcii de dispersie de forma
f : M {0,1,.., k 1} , unde M este mulimea cheilor elementelor de stocat, iar k este
numrul de intrri ale tabelei. Funcia f asociaz fiecrui element un indice n tabela
de dispersie; aceast funcie nu este neaprat bijectiv, deci pot exista mai multe
elemente care trebuie stocate n aceeai intrare a tabelei.
Intern, tabelele de dispersie se
memoreaz sub forma unui vector de
liste, dup modelul prezentat n figura
alturat. Fiecare element al listei
conine cheia mpreun cu datele
asociate.

0
1

k-1

La adugarea unui element se calculeaz indicele pe baza funciei f i se


insereaz elementul n lista corespunztoare. Cutarea se face calculnd indicele cu
ajutorul funciei de dispersie i parcurgnd lista corespunztoare.
Se cere s se implementeze clasa template TabelaDispersie cu urmtoarele
caracteristici:
are trei parametrii template: tipul cheii (TK), tipul stocat (TS) i funcia de
dispersie (F)
implementeaz operaiile de adugare, tergere, regsire
suprancarc operatorul [] n forma TS& operator[](const TK& cheie) pentru
operaii de adugare / regsire / modificare
Clasa se va testa pe obiecte de tip Persoana cu chei de tip string i funcie de
dispersie de forma: suma codurilor ASCII ale caracterelor modulo k.

6. Dicionar
Se consider un fiier text care conine pe fiecare linie perechi de cuvinte. Se
cere s se scrie un program care s traduc un fiier text folosind fiierul dicionar.

Se vor implementa:
clasa template ArboreCautare care implementeaz un arbore binar de cutare
clasa Pereche care conine perechile de cuvinte din dicionar
funcia ArboreCautare<Pereche> ConstruireDictionar(char* numeFisier)
care construiete dicionarul pe baza fiierului
funcia void Traducere(const ArboreCautare<Pereche>& dictionar, char*
numeFisier) care traduce fiierul pe baza dicionarului

7. Gestiune (Arbore)
Pentru o societate comercial se cunoate situaia stocurilor la nceputul lunii
i operaiile care au avut loc n luna curent. Datele se afl n dou fiiere text:
produse.txt cu structura [CodProdus Denumire Cantitate Pre] care conine
informaiile de la nceputul lunii
operatii.txt cu structura [CodProdus Operaie Cantitate], unde Operaie este 0
pentru intrare i 1 pentru ieire, care conine toate operaiile din cadrul lunii

Se cere:
s se construiasc clasa template ArboreCautare care implementeaz un
arbore binar de cutare
s se construiasc clasa Produs care implementeaz:
o operatorii relaionali (folosind codul produsului)
o operatorii pentru operaiile de intrare/ieire
o operatorii + i pentru scdere/adugare cantitate
s se construiasc arborele corespunztor situaiei iniiale i s se aplice
operaiile din cadrul lunii pentru a obine stocurile curente
s se afieze stocurile curente n ordinea codurilor prin parcurgerea arborelui

8. Clase de echivalen
O relaie ~ pe mulimea A se numete relaie de echivalen dac respect
urmtoarele condiii:
tranzitivitate: a ~ b b ~ c a ~ c pentru a, b, c A
simetrie: a ~ b b ~ a pentru a, b A
reflexivitate: a ~ a pentru a A
Pentru oricare element a A , clasa de echivalen a lui a este mulimea
elementelor din A aflate n relaia ~ cu a.
Se cere:
s se construiasc clasa template Mulime cu elementele stocate sub form
de list care s implementeze operaiile de baz pentru mulimi i un
mecanism de accesare a elementelor
s se implementeze o funcie ClaseEchivalen care s primeasc ca
parametri o mulime i un pointer la funcie (o relaie de echivalen ntre
elementele mulimii) i s ntoarc clasele de echivalen sub forma unei
mulimi de mulimi
s se testeze aplicaia pe o mulime de persoane (dou persoane sunt
considerate echivalente dac au aceeai vrst)

9. Reea de calculatoare
Se consider o reea de n pentru care se cunosc toate legturile. Se cere s se
determine drumurile cu numr minim de segmente ntre oricare dou calculatoare.
Se vor implementa:
clasa template MatriceRara care conine operaiile de baz pe matrice
stocate ca liste de triplei de forma (linie, coloana, informaii)
funcia MatriceRara<int> DrumuriMinime(const Matrice<bool>&
matAdiacenta) care calculeaz drumurile minime folosind nmulirea de
matrice
programul principal pentru citirea datelor dintr-un fiier text i afisarea
rezultatelor

10. Apa mineral


Un distribuitor de ap mineral de pe litoral dorete s-i determine necesarul
pentru sezonul viitor pe baza datelor din trecut. Datele pentru ultimele n sezoane sunt
disponibile ntr-un fiier text unde pe fiecare linie se gsete cte o pereche de forma
(Numr turiti, Cantitate consumat). Consumul pentru sezonul viitor se determin n
doi pai:
se determin trendul i pe baza acestuia se extrapoleaz numrul estimat de
turiti pentru sezonul viitor
se determin prin regresie liniar relaia dintre numrul de turiti i
cantitatea consumat care se aplic pe numrul estimat de turiti
Se vor implementa:
clasa template Vector care respect urmtoarele cerine:
o vectorul este stocat n memorie alocat dinamic i are lungime
variabil
o implementeaz operaiile: adugare, tergere elemente i sortare
vector
o operatori pentru referire elemente, comparare i concatenare de
vectori
clasa Pereche care conine informaiile despre o observaie (variabila
dependent i variabila independent) i operatori de intrare/ieire pentru
consol i fiiere text
funcia de aplicare a metodei celor mai mici ptrate cu prototipul Pereche
MCMMP(const Vector<Pereche>& observatii)
programul principal pentru citirea datelor din fiier text, aplicarea
MCMMP pentru determinarea coeficientilor pentru trend i regresie i
afiarea rezultatelor

11. Conferine (Vector)


Pentru o sal de conferine, intr-o anumit zi, exist mai multe cereri de
programare. Pentru fiecare cerere se cunosc urmtoarele: denumirea, ora de nceput,
ora de sfrit. Se cere s se construiasc o planificare astfel nct numrul de
conferine programate s fie maxim i s nu existe suprapuneri.
Se vor implementa:
clasa template Vector care respect urmtoarele cerine:
o vectorul este stocat n memorie alocat dinamic i are lungime
variabil
o implementeaz operaiile: adugare, tergere elemente i sortare
vector
o operatori pentru referire elemente, comparare i concatenare de
vectori
clasa Conferinta care conine informaiile despre conferine, operatori de
intrare/ieire pentru consol i fiiere text i operatorul relaional <
(comparaia se face n funcie de ora de sfrit)
funcia de planificare Vector<Conferinta> Planificare (Vector
<Conferinta>& conferinte) care face planificarea conferinelor
programul principal pentru citirea datelor dintr-un fiier text i afiarea
rezultatelor

12. Centre de distribuie


O societate comercial deine 3 centre de aprovizionare cu produse lactate i n
de centre de desfacere (pentru centre se memoreaz denumirea i oraul). Se cunosc
drumurile posibile ntre centre i distanele asociate acestora.
Se cere sa se determine pentru fiecare centru de desfacere depozitul de la care
s se fac aprovizionarea i ruta corespunztoare astfel nct distana parcurs sa fie
minim.
S se implementeze:
clasa Centru care s conin datele referitoare la un centru de desfacere sau
aprovizionare
clasa template Graf care s conin datele asociate nodurilor i distanele
dintre acestea memorate sub forma unei matrice de adiacen
o funcie DrumMinim care s determine ruta minim de la un nod la
celelalte noduri ale grafului
un program principal care s citeasc datele dintr-un fiier text i s afieze pe
ecran rutele minime

13. Gestiune (vector)


Pentru o societate comercial se cunoate situaia stocurilor la nceputul lunii
i operaiile care au avut loc n luna curent. Datele se afl n dou fiiere text:
produse.txt cu structura [CodProdus Denumire Cantitate Pre] care conine
informaiile de la nceputul lunii
operatii.txt cu structura [CodProdus Operaie Cantitate], unde Operaie este 0
pentru intrare i 1 pentru ieire, care conine toate operaiile din cadrul lunii

Se cere:
s se construiasc clasa template VectorSortat cu urmtoarele caracteristici:
o vectorul este stocat n memorie alocat dinamic i are lungime
variabil
o implementeaz operaiile: adugare, tergere element cu pstrarea
ordinii elementelor
o operatorul () pentru cutarea unui element n vector folosind cutarea
binar
o operatorul [] pentru referirea elementelor vectorului
s se construiasc clasa Produs care implementeaz:
o operatorii relaionali (folosind codul produsului)
o operatorii pentru operaiile de intrare/ieire
o operatorii + i pentru scdere/adugare cantitate
s se construiasc vectorului corespunztor situaiei iniiale i s se aplice
operaiile din cadrul lunii pentru a obine stocurile curente
s se afieze stocurile curente n ordinea codurilor

14. Mulime ca arbore

S se construiasc clasa template Mulime cu urmtoarele caracteristici:


elementele sunt stocate n memorie sub forma unui arbore binar de cutare
implementeaz operaiile cu elemente: adugare, tergere, apartenen
implementeaz operatori operaiile cu mulimi: reuniune, intersecie, diferen,
produs cartezian, test includere, test egalitate
conine o clas Iterator pentru parcurgerea n ordine a elementelor mulimii

Programul principal va testa funcionalitile clasei pentru mulimi de numere


naturale i de studeni (identificai prin numr matricol).

15. Sisteme de ecuaii (Matrice ca vector)

S se scrie programul pentru rezolvarea unui sistem liniar de ecuaii.


Se vor implementa:
clasa template Vector care cu urmtoarele caracteristici:
o vectorul este alocat dinamic (fr redimensionare)
o implementeaz operatorul [] pentru adresarea elementelor
o funcie pentru obinerea dimensiunii
funcia pentru rezolvarea sistemului de ecuaii memorat ca vector de vectori:
Vector<double> RezolvareSistem(Vector< Vector<double> >& sistem)
programul principal pentru citirea sistemului dintr-un fiier text i afiarea
rezultatelor

16. Organigrama (Arbore binar)


Datele despre angajaii unei companii se gsesc ntr-un fiier text cu linii de
forma Marca MarcaSef Nume; directorul general are marca 0.
Se cere s se afieze sub form de arbore structura organizaiei. Pentru fiecare
post de conducere se va afia suplimentar numrul de subordonai.

Se vor implementa:
clasa template Arbore pentru lucrul cu arbori oarecare cu urmtoarele
caracteristici:
o memorai sub forma fiu-frate (fiecare nod va avea dou legturi: una
pentru primul fiu i una pentru urmtorul nod aflat la acelai nivel)
o fiecare nod va avea o legtura la nodul printe
o implementeaz operaiile de adugare/tergere element
o conine o clas Iterator pentru navigarea prin arbore
o clas Angajat pentru memorarea datelor referitoare la un angajat
o funcie pentru construirea arborelui de angajai pornind de la datele din fiier
o funcie pentru calcularea numrului de subordonai
o funcie pentru afiarea arborelui

17. Registrul acionarilor


O societate comercial listat la Bursa de Valori Bucureti dorete s distribuie
dividendele aferente exerciiului financiar ncheiat. Pentru aceasta, societatea trebuie
s reconstituie registrul acionarilor la data de referin pe baza registrului actual i a
informaiilor referitoare la tranzacii furnizate de ctre burs. Aceste informaii sunt
stocate n dou fiiere text:
registru.txt: registrul curent cu linii de forma (NumrCont Nume
NumrAciuni)
trazactii.txt: tranzaciile efectuate ntre data curent i data de referin n
forma (ContSurs ContDestinatie NumrAciuni)
Se cere s se afieze registrul la data de referin sub forma unui tabel cu
coloanele NumrCont Nume NumrAciuni Procent.

Se vor implementa:
clasa template VectorSortat cu urmtoarele caracteristici:
o vectorul este stocat n memorie alocat dinamic i are lungime variabil
o implementeaz operaiile: adugare, tergere element cu pstrarea
ordinii elementelor
o operatorul () pentru cutarea unui element n vector folosind cutarea
binar
o operatorul [] pentru referirea elementelor vectorului
clasa Cont care conine:
o operatorii relaionali (folosind numrul contului)
o operatorii pentru operaiile de intrare/ieire
o operatorii += i = pentru scderea/adugarea unui numr de aciuni
programul principal pentru obinerea i afiarea registrului la data de referin
aplicnd tranzaciile n sens invers

18. Sisteme de ecuaii (Matrice rar)

S se scrie programul pentru rezolvarea unui sistem liniar de ecuaii.


Se vor implementa:
clasa template Matrice care cu urmtoarele caracteristici:
o elementele matricei sunt stocate sub forma unei liste de triplei de
forma (linie, coloan, valoare)
o implementeaz operatorul () pentru adresarea elementelor
o funcie pentru obinerea dimensiunilor
funcia pentru rezolvarea sistemului de ecuaii memorat ca vector de vectori:
Matrice<double> RezolvareSistem(Matrice <double>& sistem)
programul principal pentru citirea sistemului dintr-un fiier text i afiarea
rezultatelor

19. Conferine (Coada prioritate)


Pentru o sal de conferine, intr-o anumit zi, exist mai multe cereri de
programare. Pentru fiecare cerere se cunosc urmtoarele: denumirea, ora de nceput,
ora de sfrit. Se cere s se construiasc o planificare astfel nct numrul de
conferine programate s fie maxim i s nu existe suprapuneri.
Se vor implementa:
clasa template CoadaPrioritate care implementeaz o coad n care
disciplina de extragere a elementelor este dat de prioritatea acestora
(compararea prioritilor se face folosind operatorul <)
clasa Conferinta care conine informaiile despre conferine, operatori de
intrare/ieire pentru consol i fiiere text i operatorul relaional <
(comparaia se face n funcie de ora de sfrit)
funcia de planificare CoadaPrioritate<Conferinta> Planificare
(CoadaPrioritate<Conferinta>& conferinte) care face planificarea
conferinelor
programul principal pentru citirea datelor dintr-un fiier text i afiarea
rezultatelor

20. Problema rucsacului (Coada prioritate)


Un distribuitor are la dispoziie un camion care poate transporta o greutate
maxim G cu care poate transporta bunuri aflate n depozitul su ctre magazine.
Pentru bunurile aflate n depozit se cunosc greutatea i profitul obinut de pe urma
transportului acestuia. Presupunnd c exist posibilitatea de a transporta doar o parte
dintr-un bun pentru a se obine o ncrcare optim a camionului, se cere s se
determine bunurile care vor fi ncrcate n camion i profitul total.
Se vor implementa:
clasa template CoadaPrioritate care implementeaz o coad n care
disciplina de extragere a elementelor este dat de prioritatea acestora
(compararea prioritilor se face folosind operatorul <)
clasa Produs care conine informaiile despre un bun, operatori de
intrare/ieire pentru consol i fiiere text i operatorul relaional < pentru
determinarea prioritii
funcia
de
planificare
CoadaPrioritate<Produs>
ListaBunuri(CoadaPrioritate<Produs>& bunuri) care determin lista
bunurilor de transportat
programul principal pentru citirea datelor dintr-un fiier text i afiarea
rezultatelor

21. Problema rucsacului (Vector)


Un distribuitor are la dispoziie un camion care poate transporta o greutate
maxim G cu care poate transporta bunuri aflate n depozitul su ctre magazine.
Pentru bunurile aflate n depozit se cunosc greutatea i profitul obinut de pe urma
transportului acestuia. Presupunnd c exist posibilitatea de a transporta doar o parte
dintr-un bun pentru a se obine o ncrcare optim a camionului, se cere s se
determine bunurile care vor fi ncrcate n camion i profitul total.
Se vor implementa:
clasa template Vector care respect urmtoarele cerine:
o vectorul este stocat n memorie alocat dinamic i are lungime
variabil
o implementeaz operaiile: adugare, tergere elemente i sortare
vector
o operatori pentru referire elemente, comparare i concatenare de
vectori
clasa Produs care conine informaiile despre un bun, operatori de
intrare/ieire pentru consol i fiiere text i operatorul relaional < pentru
determinarea prioritii
funcia de planificare Vector<Produs> ListaBunuri(Vector<Produs>&
bunuri) care determin lista bunurilor de transportat
programul principal pentru citirea datelor dintr-un fiier text i afiarea
rezultatelor

22. Organigrama (Arbore oarecare)


Datele despre angajaii unei companii se gsesc ntr-un fiier text cu linii de
forma Marca MarcaSef Nume; directorul general are marca 0.
Se cere s se afieze sub form de arbore structura organizaiei. Pentru fiecare
post de conducere se va afia suplimentar numrul de subordonai.
Se vor implementa:
clasa template Arbore pentru lucrul cu arbori oarecare cu urmtoarele
caracteristici:
o fiecare nod va avea un vector alocat dinamic de legturi ctre fii i o
legtura la nodul printe
o implementeaz operaiile de adugare/tergere element
o conine o clas Iterator pentru navigarea prin arbore
o clas Angajat pentru memorarea datelor referitoare la un angajat
o funcie pentru construirea arborelui de angajai pornind de la datele din fiier
o funcie pentru calcularea numrului de subordonai
o funcie pentru afiarea arborelui

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