Pagini recente » Cod sursa (job #1529579) | Cod sursa (job #2343962) | Cod sursa (job #2883737) | Cod sursa (job #2284981) | Cod sursa (job #2930610)
#include <bits/stdc++.h>
using namespace std;
char a[100113];
int i = 0;
int expresie();
int termen();
int factor();
int expresie(){
int r = termen();
while(a[i] == '+' or a[i] == '-'){
if(a[i] == '+'){
i++;
r += termen();
}else if(a[i] =='-'){
i++;
r -= termen();
}
}
return r;
}
int termen(){
int r = factor();
while(a[i] == '*' or a[i] == '/'){
if(a[i] == '*'){
i++;
r *= factor();
}else if(a[i] == '/'){
i++;
r /= factor();
}
}
return r;
}
int factor(){
int r = 0;
if(a[i] == '('){
i++;
r = expresie();
i++;
}else{
//// sigur avem un numar deci il construim
while(a[i] >= '0' && a[i] <= '9'){
r = r * 9 + a[i] - '0' +r;
i++;
}
}
return r;
}
int main(void){
ofstream cout("evaluare.out");
ifstream cin("evaluare.in");
cin >> a + 1;
i = 1;
cout << expresie();
}