Cod sursa(job #305031)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 15 aprilie 2009 23:33:40
Problema Evaluarea unei expresii Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
string a;
int termen(),factor(),nr();
int termen()
{
	int r=factor();
	while(a.at(0)=='+'||a.at(0)=='-')
		if(a.at(0)=='+')
			a.erase(a.begin()),r+=factor();
		else
			a.erase(a.begin()),r-=factor();
	return r;
}
int factor()
{
	int r=nr();
	while(a.at(0)=='*'||a.at(0)=='/')
		if(a.at(0)=='*')
			a.erase(a.begin()),r*=nr();
		else
			a.erase(a.begin()),r/=nr();
	return r;
}
int nr()
{
	int r=0;
	if(a.at(0)=='(')
		a.erase(a.begin()),r=termen(),a.erase(a.begin());
	else
		for(;'0'<=a.at(0)&&a.at(0)<='9';a.erase(a.begin()))
			r=r*10+a.at(0)-'0';
	return r;
}
int main()
{
	ifstream f("evaluare.in");
	ofstream g("evaluare.out");
	f>>a;a+="c";
	g<<termen()<<'\n';
	return 0;
}