== include(page="template/taskheader" task_id="evaluare1") ==
Poveste şi cerinţă...
Să se evalueze o expresie aritmetică. Aceasta poate conţine: operanzi numere naturale, operatorii: + (operator binar, adunare), / (operator binar, câtul împărţirii), ^ (operator binar, ridicare la putere), ! (operator unar, oglindeşte valoarea operandului, ex: !560 dă 65). Oricare doi operatori au priorităţi diferite (crescătoare, în ordinea dată mai sus, aşadar + are prioritatea cea mai mică). Operatorii + şi / se aplică de la stânga la dreapta. Operatorul ^ se aplică de la dreapta la stânga. Operatorul !, ca orice operator unar se aplică de la dreapta la stânga. De asemenea, pot apărea paranteze rotunde care schimbă prioritatea operatorilor. Spre exemplu, expresia: 5+(!!10 + 3^2^3)/2 are valoarea 3286 ( 5 + (1+3^8)/2 → 5+6562/2 → 5+3281 → 3286 ).
h2. Date de intrare
Fişierul de intrare $evaluare1.in$ ...
Fişierul $evaluare1.in$ contine pe primul rând expresia de evaluat.
h2. Date de ieşire
În fişierul de ieşire $evaluare1.out$ ...
Fişierul $evaluare1.out$ conţine pe primul rând valoarea expresiei evaluate.
h2. Restricţii
* $... ≤ ... ≤ ...$
* şirul dat are maxim 100 de caractere
* numerele care apar iniţial în expresie sunt naturale de maxim 3 cifre
* valoarea de afişat se încadrează pe long long
* pentru 10% din punctaj nu apar paranteze şi este prezent doar operatorul +
* pentru alte 10% din punctaj nu apar paranteze şi sunt prezenţi doar operatorii + şi /
* pentru alte 40% din punctaj apar doar operatorii + şi / şi pot apărea şi paranteze
* pentru alte 10% din punctaj apar paranteze şi operatorii +, / şi !
* pentru alte 10% din punctaj apar paranteze şi operatorii +, / şi ^
* expresia dată este corectă şi nu conţine alte caractere
h2. Exemplu
table(example). |_. evaluare1.in |_. evaluare1.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
| 5+(!!10+3^2^3)/2
| 3286
|
h3. Explicaţie
...
== include(page="template/taskfooter" task_id="evaluare1") ==