Pagini recente » Cod sursa (job #974222) | Cod sursa (job #2469219) | Cod sursa (job #2346124) | Cod sursa (job #2317253) | Cod sursa (job #2928083)
#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 * 10 + a[i] - '0';
i++;
}
}
return r;
}
int main(void){
ofstream cout("evaluare.out");
ifstream cin("evaluare.in");
cin >> a + 1;
i = 1;
cout << expresie();
}