Cod sursa(job #469576)

Utilizator S7012MYPetru Trimbitas S7012MY Data 8 iulie 2010 12:49:02
Problema Evaluarea unei expresii Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <iostream>
#include <string.h>
#define NM 2
#define DN 100007
using namespace std;

char op[4][4] = { "+-", "*/", "^", "" };
char S[DN], *p=S;
class exp {
private: 
	int ex(int a,int b, char op) {
		if(op=='+') return a + b;
		else if(op=='-') return a - b;
		else if(op=='*') return a * b;
		else if(op=='/') return a / b;
	}
public:
	int expr( int lev ) {
		int x, y;
		if( lev == NM )
			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 = ex( x, expr(lev+1), *p++ );
		return x;
	}

}Ex;

int main()
{
	ifstream f("evaluare.in");
	ofstream g("evaluare.out");
	f>>S;
	g<<Ex.expr(0);
	f.close();
	g.close();
	return 0;
}