Pagini recente » Cod sursa (job #1815754) | Cod sursa (job #534240) | Cod sursa (job #1961119) | Cod sursa (job #2015365) | Cod sursa (job #2038495)
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char S[100009], *p = S;
int evaluare();
int factor(){
int r;
if(*p == '(') { ++p; r = evaluare(); ++p; }
else{
r = 0;
while(*p >= '0' && *p <= '9') { r = r * 10 + *p - '0'; ++p; }
}
return r;
}
int termen(){
int r = factor();
while(*p == '*' || *p == '/')
switch(*p){
case '*': ++p; r *= factor(); break;
case '/': ++p; r /= factor(); break;
}
return r;
}
int evaluare(){
int r = termen();
while(*p == '+' || *p == '-')
switch(*p){
case '+': ++p; r += termen(); break;
case '-': ++p; r -= termen(); break;
}
return r;
}
int main(){
in >> S;
out << evaluare();
out.close();
return 0;
}