Pagini recente » Cod sursa (job #2843124) | Cod sursa (job #2125481) | Cod sursa (job #477975) | Cod sursa (job #1525352) | Cod sursa (job #1111932)
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
const int MAX_N = 100000;
char v[MAX_N+1];
int poz;
int expresie();
int factor();
int termen();
int expresie(){
int e;
e = termen();
while (v[poz] == '+' || v[poz] == '-') {
if (v[poz] == '+') {
poz++;
e += termen();
} else {
poz++;
e -= termen();
}
}
return e;
}
int termen(){
int t = factor();
while(v[poz] == '*' || v[poz] == '/'){
if(v[poz] == '*'){
poz++;
t *= factor();
} else {
poz++;
t /= factor();
}
}
return t;
}
int factor(){
int f = 0, semn = 1;
while(v[poz] == '-'){
poz++;
semn *= -semn;
}
if(v[poz] == '('){
poz++;
f = expresie();
poz++;
return f*semn;
}
while(v[poz] >= '0' && v[poz] <= '9'){
f = f*10 + (v[poz++]-'0');
}
return f*semn;
}
int main()
{
in >> v;
out << expresie();
return 0;
}