Documente Academic
Documente Profesional
Documente Cultură
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
Programul principal va testa funcionalitile clasei pentru mulimi de numere naturale i de studeni (identificai prin numr matricol).