Pagini recente » Cod sursa (job #3157630) | Cod sursa (job #3038731) | Cod sursa (job #1723127) | Cod sursa (job #473149) | Cod sursa (job #2287860)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char o[4][4]={"+-","*/"},*p;
int L(int a,int b,char o) {
switch(o) {
case '+':return a+b;
case '-':return a-b;
case '*':return a*b;
case '/':return a/b;
}
}
int E(int l) {
int x,y;
if(l==2)
if(*p=='(')
++p,x=E(0),++p;
else
for(x=0;*p>='0'&&*p<='9';++p)
x=x*10+*p-'0';
else
for(x=E(l+1);strchr(o[l],*p);x=y,*p++)
y=L(x,E(l+1),*p);
/*if(*p=='+')
y=x+E(l+1),*p++;
else if(*p=='-')
y=x-E(l+1),*p++;
else if(*p=='*')
y=x*E(l+1),*p++;
else if(*p=='/')
y=x/E(l+1),*p++;*/
return x;
}
int main() {
p=(char*)malloc(100000*sizeof(char));
fgets(p,100000,fopen("evaluare.in","r"));
fprintf(fopen("evaluare.out","w"),"%d",E(0));
}