Cod sursa(job #1238446)

Utilizator vtt271Vasile Toncu vtt271 Data 6 octombrie 2014 22:54:41
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
 
using namespace std;
 
ifstream  inFile("file.in");
ofstream outFile("evaluare.out");

int evaluate(char* &);
int   termen(char* &);
int   factor(char* &);

int evaluate(char* &p)
{
	int r = termen(p);

	while(*p == '+' || *p == '-'){
		if(*p == '+'){
			p++;
			r += termen(p);
		}
		if(*p == '-'){
			p++;
			r -= termen(p);
		}
	}

	return r;
}

int termen(char* &p)
{
	int r = factor(p);

	while(*p == '*' || *p == '/'){
		if(*p == '*'){
			p++;
			r *= factor(p);
		}
		if(*p == '/'){
			p++;
			r /= factor(p);
		}
	}

	return r;
}

int factor(char* &p)
{
	int r = 0;
	
	if(*p == '('){
		p++;
		r = evaluate(p);
		p++;
	}
	if('0' <= *p && *p <= '9'){
		while('0' <= *p && *p <= '9'){
			r = 10*r + (*p - '0');
			p++;
		}
	}

	return r;
}
 
int main()
{
    char expresion[100005];
    inFile >> expresion;
 
	char* p = expresion;
    outFile << evaluate(p) << "\n";
 
}