Cod sursa(job #484033)

Utilizator andunhillMacarescu Sebastian andunhill Data 11 septembrie 2010 17:20:46
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
#include<stack>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char a[100001],*p=a;
int N,rez;
long termen(),factor();
int cif(char x)
{	return ( x>='0' && x<='9'); }
long number()
{	long  r=0;
	while(cif(*p)) r=r*10+*p-'0' , p++;
	return r;
}
long evaluare()
{	long r=termen();
	while(*p=='+' || *p=='-')
		(*p=='+')?(p++ , r+=termen()):(p++ , r-=termen());
	return r;
}
long termen()
{	long r=factor();
	while(*p=='*' || *p=='/')
		(*p=='*')?(p++ , r*=factor()):(p++ , r/=factor());
	return r;
}
long factor()
{	long r=0;
	if(*p=='(') p++ , r=evaluare() , p++;
	else r=number();
	return r;
}
int main()
{	int ax,i;
	f>>a;
	g<<evaluare();
	f.close();
	g.close();
	return 0;
}