Pagini recente » Cod sursa (job #205437) | Cod sursa (job #889092) | Cod sursa (job #1134007) | Cod sursa (job #2254808) | Cod sursa (job #2790425)
#include <fstream>
#include <string>///scz ca fac cu recursivitate, dar am incercat o solutie cu stackuri si cu nivele de importanta si nu mi-a iesit implementarea si nu prea mai am chef...
#define NMAX 100000
using namespace std;
string s;
int poz = -1;
int evalSol();
int getNumber() {
int x = 0;
if( s[poz] == '(' ) {
x = evalSol();
poz++;
} else {
while( '0' <= s[poz] && s[poz] <= '9' ) {
x = x * 10 + s[poz] - '0';
poz++;
}
}
return x;
}
int imultire() {
int rez = getNumber(), x;
char semn;
while( s[poz] == '/' || s[poz] == '*' ) {
semn = s[poz];
poz++;
x = getNumber();
if( semn == '/' )
rez /= x;
else
rez *= x;
}
return rez;
}
int evalSol() {
poz++;
int rez = imultire(), x;
char semn;
while( s[poz] == '-' || s[poz] == '+' ) {
semn = s[poz];
poz++;
x = imultire();
if( semn == '-' )
rez -= x;
else
rez += x;
}
return rez;
}
int main() {
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
cin>>s;
cout<<evalSol();
return 0;
}