Cod sursa(job #305262)

Utilizator TyberFMI Dogan Adrian Ioan Lucian Tyber Data 16 aprilie 2009 19:22:16
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
#include<string.h>
#define nmax 100001
int eval(int,int,char);
int expr(int);
char op[4][4]={"+-","*/","^",""},s[nmax],*p=s;
int main(){
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(s,nmax,stdin);
	printf("%d\n",expr(0));
	return 0;
}
int eval(int a,int b,char t){
	if(t=='+')return a+b;
	if(t=='-')return a-b;
	if(t=='*')return a*b;
	if(t=='/')return a/b;
}
int expr(int t){
	int x,y;
	if(t==2)
		if(*p=='('){
			p++;
			x=expr(0);
			p++;
		}
		else
			for(x=0;*p>='0'&&*p<='9';p++)
				x=x*10+*p-'0';
    else
		for(x=expr(t+1);strchr(op[t],*p);x=y)
			y=eval(x,expr(t+1),*p++);
	return x;
}