Pagini recente » Cod sursa (job #66671) | Cod sursa (job #2797156) | Cod sursa (job #3265149) | Cod sursa (job #1161445) | Cod sursa (job #339453)
Cod sursa(job #339453)
#include <stdio.h>
#define Nmax 100005
char s[Nmax],*p=s;
void read(){
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
fgets(s,Nmax,stdin);
}
int termen();
int factor();
int eval();
int eval(){
int rez = termen();
while(*p=='+' || *p=='-'){
if(*p =='+'){
p++;
rez += termen();
}
else
if(*p =='-'){
p++;
rez -= termen();
}
}
return rez;
}
int termen(){
int rez = factor();
while(*p=='*' || *p=='/'){
if(*p =='*'){
p++;
rez *= factor();
}
else
if(*p =='/'){
p++;
rez /= factor();
}
}
return rez;
}
int factor(){
int rez=0;
if(*p =='('){
p++;
rez =eval();
p++;
}
else
while(*p >='0' && *p<='9'){
rez = rez*10 + *p-'0';
p++;
}
return rez;
}
int main(){
read();
printf("%d\n",eval());
fclose(stdin); fclose(stdout);
return 0;
}