Cod sursa(job #724122)

Utilizator YvonneYvonne Enescu Yvonne Data 26 martie 2012 11:33:02
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<string>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char s[100001];
int p;
int expresie();
int factor()
{
	int val=0, semn=1;
	while(s[p]=='-')
	{
		p++;
		semn=-semn;
	}
	if(s[p]=='(')
	{
		p++;
		val=expresie();
		p++;
		return semn*val;
	}
	while(s[p]>='0' && s[p]<='9')
	{
		val=val*10+s[p]-'0';
		p++;
	}
	return semn*val;
}
int termen()
{
	int prod=factor();
	while(s[p]=='*' || s[p]=='/')
		if(s[p]=='*')
		{
			p++;
			prod*=factor();
		}
		else
		{
			p++;
			prod/=factor();
		}
	return prod;
}
int expresie()
{
	int sum=termen();
	while(s[p]=='+' || s[p]=='-')
		if(s[p]=='+')
		{
			p++;
			sum+=termen();
		}
		else
		{
			p++;
			sum-=termen();
		}
		return sum;
}

int main()
{
	in.getline(s,100001);
	out<<expresie();
	return 0;
}