Pagini recente » Cod sursa (job #2419239) | Cod sursa (job #1857044) | Cod sursa (job #1214769) | Cod sursa (job #908814) | Cod sursa (job #560744)
Cod sursa(job #560744)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int SMAX = 100010;
char s[SMAX];
char* p = s;
int EvalExpres();
int EvalFactor();
int EvalTermen();
int EvalExpres(){
int x = EvalTermen();
while (*p == '+' || *p == '-'){
switch (*p){
case '+':
++p;
x += EvalTermen();
break;
case '-':
++p;
x -= EvalTermen();
break;
}
}
return x;
}
int EvalTermen(){
int x = EvalFactor();
while ( *p == '*' || *p == '/' ){
switch (*p){
case '*':
++p;
x *= EvalFactor();
break;
case '/':
++p;
x /= EvalFactor();
break;
}
}
return x;
}
int EvalFactor(){
int x=0;
if (*p == '('){
++p;
x = EvalExpres();
++p;
}
else{
while(isdigit(*p)){
x = x*10 + *p - '0';
++p;
}
}
return x;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",s);
printf("%d\n",EvalExpres());
return 0;
}