Cod sursa(job #671104)

Utilizator batistaUPB-Oprea-Cosmin-Dumitru batista Data 30 ianuarie 2012 18:56:45
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>
using namespace std;
char s[100005],*p;
long eval();
long termen();
long factor();
long eval()
{long rez=termen();
	while(*p=='+' || *p=='-')
	{
		if(*p=='+'){p++; rez+=termen();}
		if(*p=='-'){p++; rez-=termen();}
	}
	return rez;
}
long termen()
{long rez=factor();
	while(*p=='*' || *p=='/')
	{
		if(*p=='*'){p++; rez*=factor(); }
		if(*p=='/'){p++; rez/=factor(); }
	}
	return rez;
}
long factor()
{int rez=0;
	if(*p=='('){ p++; rez=eval(); p++; }
	else
	while(*p<='9' && *p>='0'){rez=rez*10+*p-'0'; p++;}
	return rez;
}
int main()
{
	ifstream f("evaluare.in");ofstream g("evaluare.out");
	f.getline(s,100003);
	p=s;
	g<<eval();
	f.close();g.close();
return 0;}