Cod sursa(job #2068573)

Utilizator smatei16Matei Staicu smatei16 Data 18 noiembrie 2017 09:23:19
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>

using namespace std;
char s[100005],*p;
int eval();
int termen();
int factor();
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    scanf("%s",&s);
    p=s;
    printf("%d",eval());

    return 0;
}
int eval(){
int r;
r=termen();
while(*p=='+' || *p=='-')
if(*p=='+'){++p;r+=termen();}
else {++p;r-=termen();}
return r;
}
int termen(){
int r;
r=factor();
while(*p=='*' || *p=='/')
if(*p=='*'){++p;r*=factor();}
else {++p;r/=factor();}
return r;
}
int factor(){
int r=0;
if(*p=='('){
    ++p;
    r=eval();
    ++p;
   }
   else while(*p>='0' && *p<='9'){
    r=r*10+((int)*p-'0');
    ++p;
   }
   return r;
}