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