Pagini recente » Cod sursa (job #2707345) | Cod sursa (job #1903795) | Cod sursa (job #3237519) | Cod sursa (job #1957113) | Cod sursa (job #2812390)
#include <iostream>
#define sau ||
using namespace std;
char s[100100];
int i;
int expresie(); // declar prototipurile functiilor si implementarile le pot face si dupa main
int termen();
int factor();
int expresie(){
int r = termen(); // apel pentru extragere al primului termen al expresiei
while(s[i] == '+' sau s[i] == '-'){
if(s[i] == '+'){
i++; //sar peste plus / minus
r += termen();
}else{
i++;
r -= termen();
}
}
return r;
}
int termen(){
int r = factor(); // apel pentru extragere al primului termen al expresiei
while(s[i] == '*' sau s[i] == '/'){
if(s[i] == '*'){
i++; //sar peste plus / minus
r *= factor();
}else{
i++;
r /= factor();
}
}
return r;
}
int factor(){
int r = 0;
if(s[i] == '('){
//fac este de forma (expresie)
i++;
r = expresie();
i++;
}else{
// fac este o constanta efectiva
r = 0;
while(s[i] >= '0' && s[i] <= '9'){
r = r* 10 + (s[i]-'0');
i++;
}
}
return r;
}
int main(void){
cin >> s;
i = 0;
cout << expresie();
}