Pagini recente » Cod sursa (job #1623049) | Cod sursa (job #2861828)
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
const int NMAX = 1e5;
char expresie[NMAX + 5];
int p;
int factor();
int termen();
int eval();
int eval(){
int ans = factor();
while(expresie[p] == '+' || expresie[p] == '-'){
if(expresie[p] == '+'){
p++;
ans += factor();
}else{
p++;
ans -= factor();
}
}
return ans;
}
int factor(){
int ans = termen();
while(expresie[p] == '*' || expresie[p] == '/'){
if(expresie[p] == '*'){
p++;
ans *= termen();
}else{
p++;
ans /= termen();
}
}
return ans;
}
int termen(){
int semn = 1, x = 0;
while(expresie[p] == '-')
semn = -semn, p++;
if(expresie[p] == '('){
p++;
x = eval();
p++;
return x * semn;
}
while(isdigit(expresie[p])){
x = x * 10 + (expresie[p] - 48);
p++;
}
return x * semn;
}
int main(){
cin.getline(expresie, NMAX + 1);
cout << eval();
}