Fişierul intrare/ieşire:evaluare.in, evaluare.outSursăad-hoc
AutorArhiva EducationalaAdăugată desima_cotizoSima Cotizo sima_cotizo
Timp execuţie pe test0.05 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Evaluarea unei expresii

Se da un sir de caractere ce reprezinta o expresie aritmetica.

Cerinta

Afisati rezultatul obtinut prin evaluarea expresiei.

Date de intrare

Fisierul de intrare evaluare.in va contine pe prima linie un sir de caractere compus din cifre ( '0' - '9' ), operatorii '+', '-', '*', '/' si paranteze( '(', ')' ).

Date de iesire

In fisierul de iesire evaluare.out se va scrie un singur numar intreg care reprezinta valoarea obtinuta in urma evaluarii expresiei.

Restrictii si precizari

  • 1 ≤ lungimea sirului ≤ 100 000
  • Operatorii '+','-','*' au semnificatia cunoscuta de la matematica, iar operatorul '/' reprezinta catul impartirii intregi a doua numere
  • Ordinea efectuarii operatiilor este cea normala
  • Se garanteaza ca rezultatul final, operanzii si orice rezultat intermediar nu depasesc in modul 1 000 000 000 (un miliard)

Exemplu

evaluare.inevaluare.out
(1+1)*13+10/2
31

Indicatii de rezolvare

Probabil cea mai cunoscuta metoda de a evalua o expresie algebrica este scrierea ei in forma poloneza, urmata de evaluarea propriu-zisa, despre care puteti gasi mai multe aici .
Problema se poate rezolva si folosind arbori, metoda explicata pe larg aici .
De asemenea, o a treia metoda este explicata pe larg in aceasta sursa de 100 de puncte. O varianta mai compacta este aceasta sursa .
Doua implementari care merita cu prisosinta sa fie luate in seama sunt: 1 si 2 . Prima este utila prin lipsa recursivitatii indirecte, iar a doua construieste arborele expresiei.

Probleme asemanatoare:

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?

remote content