Documente Academic
Documente Profesional
Documente Cultură
Exemple Probleme Programare Orientata Obiect
Exemple Probleme Programare Orientata Obiect
Evaluare expresii
Se cere s se evalueze o expresie aritmetic compus din operatori (+,-,/,*),
operanzi (numere ntregi) i paranteze folosind 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.
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
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
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
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
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
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