This shows you the differences between two versions of the page.
|
sd-ca:laboratoare:laborator-09 [2015/05/06 00:59] mihai.neacsu2901 [Evaluarea expresiilor] Correct function args |
sd-ca:laboratoare:laborator-09 [2015/05/10 08:43] (current) mihai.neacsu2901 [Exerciții] Update tasks solution file name |
||
|---|---|---|---|
| Line 7: | Line 7: | ||
| În urma parcurgerii laboratorului, studentul va fi capabil să: | În urma parcurgerii laboratorului, studentul va fi capabil să: | ||
| - | *să înţeleagă noţiunea de arbore şi structura unui arbore binar | + | *înţeleagă noţiunea de arbore şi structura unui arbore binar |
| - | *să construiască, în limbajul C++, un arbore binar | + | *construiască, în limbajul C++, un arbore binar |
| - | *să realizeze o parcurgere a structurii de date prin mai multe moduri | + | *realizeze o parcurgere a structurii de date prin mai multe moduri |
| - | *să citească o expresie matematică şi să-i construiască arborele binar asociat | + | *citească o expresie matematică şi să-i construiască arborele binar asociat |
| - | *să evalueze o expresie matematică dată printr-un arbore binar. | + | *evalueze o expresie matematică dată printr-un arbore binar. |
| ===== Noțiuni teoretice ===== | ===== Noțiuni teoretice ===== | ||
| Line 157: | Line 157: | ||
| ===== Exerciții ===== | ===== Exerciții ===== | ||
| - | + | Acest laborator se va realiza pornind de la **{{:sd-ca:laboratoare:labbinarytree-tasks.zip|scheletul de cod}}**. | |
| - | Acest laborator se va realiza pornind de la **{{:sd-ca:laboratoare:lab08-tasks.zip|scheletul de cod}}**. | + | |
| În cadrul arhivei, aveți la dispoziție un parser pentru expresii logice sub **forma normal disjunctivă - DNF**: | În cadrul arhivei, aveți la dispoziție un parser pentru expresii logice sub **forma normal disjunctivă - DNF**: | ||
| Line 201: | Line 200: | ||
| *[**1p**] Folosiți drept model parseExpression și terminați parseLiteral (**TODO 3.2**) | *[**1p**] Folosiți drept model parseExpression și terminați parseLiteral (**TODO 3.2**) | ||
| *[**1p**] Verificați că expresia afișată este chiar cea pe care ați dat-o ca parametru (trebuie să faceți parcurgere în inordine și fără indentare) (**TODO 3.3**) | *[**1p**] Verificați că expresia afișată este chiar cea pe care ați dat-o ca parametru (trebuie să faceți parcurgere în inordine și fără indentare) (**TODO 3.3**) | ||
| + | |||
| + | Pentru testarea acestui exercițiu, folosiți o expresie fără variabile, de exemplu: 0 & 1 | 1 & !0 | !1 | 1 & 1 & 1 | ||
| 4. [**4p**] (main.cpp) Implementați evaluarea unei expresii în evaluateAST() | 4. [**4p**] (main.cpp) Implementați evaluarea unei expresii în evaluateAST() | ||
| - | Pentru testarea acestui exercițiu, folosiți o expresie fără variabile, de exemplu: 0 & 1 | 1 & !0 | !1 | 1 & 1 & 1 | ||
| 5. [**2p**] Folosiți un hashtable pentru a ține evidența valorilor variabilelor. Variabilele sunt declarate la început, folosind atribuiri ''variabila = valoare''. Pentru fiecare astfel de linie citită, parsați-o și introduceți variabila împreună cu valoarea ei într-un hashtable (puteți folosi clasa [[http://www.cplusplus.com/reference/unordered_map/unordered_map/ | unordered_map]] din STL. ) | 5. [**2p**] Folosiți un hashtable pentru a ține evidența valorilor variabilelor. Variabilele sunt declarate la început, folosind atribuiri ''variabila = valoare''. Pentru fiecare astfel de linie citită, parsați-o și introduceți variabila împreună cu valoarea ei într-un hashtable (puteți folosi clasa [[http://www.cplusplus.com/reference/unordered_map/unordered_map/ | unordered_map]] din STL. ) | ||
| Pentru evaluarea expresiei, de fiecare dată când intâlniți o variabilă, vedeți ce valoare îi este atribuită în hashtable și folosiți acea valoare pentru evaluarea expresiei. | Pentru evaluarea expresiei, de fiecare dată când intâlniți o variabilă, vedeți ce valoare îi este atribuită în hashtable și folosiți acea valoare pentru evaluarea expresiei. | ||
| </hidden> | </hidden> | ||
| + | <note tip>**{{:sd-ca:laboratoare:labbinarytree-sol.zip|Soluție laborator}}** </note> | ||
| ===== Interviu ===== | ===== Interviu ===== | ||