This shows you the differences between two versions of the page.
sda-aa:laboratoare:05 [2021/03/28 22:24] cristian.rusu |
sda-aa:laboratoare:05 [2021/03/29 12:00] (current) cristian.rusu |
||
---|---|---|---|
Line 168: | Line 168: | ||
Scrieți un program care folosește arbori pentru a evalua expresii matematice cu cifre. | Scrieți un program care folosește arbori pentru a evalua expresii matematice cu cifre. | ||
- | Să considerăm o expresie matematică: 2 + 4*5 + 1*2*3. | + | Să considerăm o expresie matematică: 2+4*5+1*2*3. |
Pentru a crea un arbore de parsare avem nevoie să folosim următoarele structuri: | Pentru a crea un arbore de parsare avem nevoie să folosim următoarele structuri: | ||
Line 187: | Line 187: | ||
Algoritmul presupune: | Algoritmul presupune: | ||
- | |||
* Se parcurge expresia,termen cu termen (un termen poate fi operator sau operand) | * Se parcurge expresia,termen cu termen (un termen poate fi operator sau operand) | ||
* Dacă termenul curent este operand aceasta se adaugă in stivă rezultat și se trece la termenul urmator | * Dacă termenul curent este operand aceasta se adaugă in stivă rezultat și se trece la termenul urmator | ||
- | * Daca termenul curent este operator ($) | + | * Daca termenul curent este operator (!) |
* Daca stiva operatorilor este vidă,se adaugă operatorul in stiva de operatori și se trece la termenul urmator | * Daca stiva operatorilor este vidă,se adaugă operatorul in stiva de operatori și se trece la termenul urmator | ||
* Dacă stiva nu este vidă: | * Dacă stiva nu este vidă: | ||
Line 199: | Line 198: | ||
* Se creează un nou rezultat intermediar,aplicând operatorul extras pe cele două rezultate de mai sus | * Se creează un nou rezultat intermediar,aplicând operatorul extras pe cele două rezultate de mai sus | ||
* Acest rezultat intermediar se adaugă în stiva de rezultate | * Acest rezultat intermediar se adaugă în stiva de rezultate | ||
- | * Se verifică condițiile de la $(se compară din nou același operator curent cu operatorul din vârful stivei). | + | * Se verifică condițiile de la ! (se compară din nou același operator curent cu operatorul din vârful stivei). |
+ | |||
+ | Construiți arborele asociat expresiei. | ||
+ | |||
+ | {{:sda-aa:laboratoare:ast_stiva.jpg?800|}} | ||