Pagini recente » Cod sursa (job #1993114) | Cod sursa (job #1352539) | Cod sursa (job #773351) | Istoria paginii runda/omg_am_revenit/clasament | Cod sursa (job #956313)
Cod sursa(job #956313)
#include<string.h>
#include<stdio.h>
#define MAXLen 100001
char a[MAXLen];
char op[][3] = {"+-", "*/"};
char *p = a;
int apply(int x, int y, char op){
switch(op){
case '+': return x+y;
case '-': return x-y;
case '/': return x/y;
case '*': return x*y;
}
return 0;
}
int eval(int level){
int x=0;
if(level == 2){
if(*p == '(')
++p, x = eval(0), ++p;
else
while(*p>='0' && *p<='9')
x = x*10+(*p++ - '0');
return x;
}
else {
for(x = eval(level+1); strchr(op[level], *p);)
x = apply(x, eval(level+1), *p++);
return x;
}
}
int main(){
FILE *f = fopen("evaluare.in", "r");
FILE *g = fopen("evaluare.out", "w");
fgets(a, MAXLen*sizeof(int), f);
int result = eval(0);
fprintf(g, "%d\n", result);
fclose(f);
fclose(g);
return 0;
}