Pagini recente » Cod sursa (job #2184037) | Cod sursa (job #441940) | Cod sursa (job #1369849) | Monitorul de evaluare | Cod sursa (job #2011078)
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char s[101101];
char *p = s;
long long factor();
long long element();
long long operatie(){
long long result = factor();
while(*p!=NULL && (*p == '+' || *p == '-')){
switch(*p){
case '+': p++;
result += factor();
break;
case '-': p++;
result -= factor();
break;
}
}
return result;
}
long long factor(){
long long result = element();
while(*p!=NULL && (*p == '*' || *p == '/')){
switch(*p){
case '*': p++;
result *= element();
break;
case '/': p++;
result /= element();
break;
}
}
return result;
}
long long element(){
long long result;
if(*p == '('){
p++;
result = operatie();
p++;
}else{
long long el = 0;
while(*p!=NULL && strchr("123456790",*p)!=NULL){
el = el*10 + (*p - '0');
p++;
}
result = el;
}
return result;
}
int main(){
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
cin.getline(s,101101);
cout<<operatie();
return 0;
}