Cod sursa(job #715543)

Utilizator andreipasalauPasalau Andrei andreipasalau Data 17 martie 2012 13:39:30
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb

#include<fstream>
#include<string>
using namespace std;



ifstream f("evaluare.in");
ofstream g("evaluare.out");

char c;

long numar();
long prod();

long expr(){
	long rez = prod();
	while((c == '+'|| c == '-')){
		if(c == '+'){
			f>>c;
			rez += prod();
		}
		if(c == '-'){
			f >> c;
			rez -= prod();
		}
	}
	return rez;
}


long prod(){
	long rez = numar();
	while((c == '*'|| c == '/')){
		if(c == '*'){
			f >> c;
			rez =rez * numar();
		}
		if(c == '/'){
			f >> c;
			rez =rez/ numar();
		}
	}
	return rez;
}


long numar(){
	long nr = 0;
	if(c == '('){
		f>>c;
		nr = expr();
		f>>c;
	}else{
		while(c>='0'&&c<='9'&&!f.eof()){
			nr = nr*10+c-'0'; 
			f>>c;
		}
	}
	return nr;
}


int main()
{	
	f>>c;
	g<<expr();
	f.close();
	g.close();
	return 0;
}