Pagini recente » Cod sursa (job #552637) | Cod sursa (job #1806341) | Cod sursa (job #1760773) | Cod sursa (job #510946) | Cod sursa (job #1245998)
#include<cstdio>
using namespace std;
FILE *in = fopen("evaluare.in","r");
FILE *out = fopen("evaluare.out","w");
const int Nmax = 100000;
char S[Nmax + 5];
int p;
int expresie();
int termen();
int factor();
int main (){
fgets(S,Nmax,in);
fprintf(out,"%d\n",expresie());
return 0;
}
int expresie(){
int sum = termen();
while (S[p]=='-' || S[p]=='+'){
if(S[p]=='-'){
p++;
sum-=termen();
}else{
p++;
sum+=termen();
}
}
return sum;
}
int termen(){
int prod = factor();
while (S[p]=='*' || S[p]=='/'){
if(S[p]=='*'){
p++;
prod*=factor();
}else{
p++;
prod/=factor();
}
}
return prod;
}
int factor(){
int val = 0, semn = 1;
while (S[p]=='-'){
semn=-semn;
}
if(S[p]=='('){
p++;
val=expresie();
p++;
}
while(S[p]>='0' && S[p]<='9'){
val=val*10+S[p]-'0';
++p;
}
return semn*val;
}