Pagini recente » Cod sursa (job #3189679) | Cod sursa (job #886986) | Cod sursa (job #1427684) | Cod sursa (job #3237647) | Cod sursa (job #441997)
Cod sursa(job #441997)
#include <stdio.h>
#include <string.h>
#define NMAX 100010
int termen();
int factor();
int exp();
char str[NMAX],*p = str;
int exp() {
int ter = termen();
while(*p == '+' || *p =='-') {
if(*p == '+') { ++p; ter += termen();}
if(*p == '-') { ++p; ter -= termen();}
}
return ter;
};
int termen() {
int fac = factor();
while(*p == '*' || *p == '/') {
if(*p == '*') {++p; fac *= factor();}
if(*p == '/') {++p; fac /= factor();}
}
return fac;
};
int factor() {
int r = 0;
if(*p == '(' ) {
++p;
r = exp();
++p;
} else
while(*p >= '0' && *p <= '9') {
r = r*10 + *p-'0';
++p;
}
return r;
}
int main(){
freopen("evaluare.in","rb",stdin);
freopen("evaluare.out","w",stdout);
fread(str, sizeof(char), NMAX, stdin);
//strcat(str,"(1+1)*13+10/2");
printf("%d",exp());
return 0;
}