Cod sursa(job #653573)

Utilizator galbenugalbenu dorin galbenu Data 28 decembrie 2011 13:29:33
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstring>
#include<fstream>
#define LMAX 2
#define NMAX 100010
using namespace std;
ifstream f("evaluare.in",fstream::in);
ofstream g("evaluare.out",fstream::out);
//char op[4][4] = { "+-", "*/", "^", "" };
char op[4][4] ={ "+-","*/","^",""};
char S[NMAX], *p = S;

int eval( 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 expr( int lev ) {
	int x, y;

	if(lev ==LMAX)
		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(lev+1);strchr(op[lev],*p);x=y)
			y=eval(x,expr(lev+1),*p++);
	return x;
}

int main() {
	f.get(S,NMAX);
	S[strlen(S)]='\n';
	g<<expr(0);
	return 0;
}