Pagini recente » Cod sursa (job #2730534) | Cod sursa (job #228398) | Cod sursa (job #2273411) | Cod sursa (job #2738942) | Cod sursa (job #2876820)
#include <fstream>
#include <queue>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
#define Inf 0x3f3f3f3f
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string a;
int p = 0;
int rez;
int termen();
int eval();
int factor();
int eval(){
int semn = 1;
int ans = termen();
while(a[p] == '+' || a[p] == '-'){
int semn = 1;
p++;
if(a[p - 1] == '-')
semn = -1;
else if(a[p - 1] == '+')
semn = 1;
ans = ans + (semn * termen());
}
return ans;
}
int termen(){
int ans = factor();
while(a[p] == '*' || a[p] == '/'){
p++;
if(a[p - 1] == '/')
ans /= factor();
else if(a[p - 1] == '*')
ans *= factor();
}
return ans;
}
int factor(){
int ans = 0;
if(a[p] == '('){
p++;
ans = eval();
p++;
}
else{
while(a[p] >= '0' && a[p] <= '9')
ans = ans * 10 + (a[p++] - '0');
}
return ans;
}
int main(){
cin >> a;
cout << eval();
return 0;
}