Cod sursa(job #787674)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 13 septembrie 2012 19:44:34
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<iostream>
#include<fstream>
#include<cctype>
using namespace std;
char lin[100005],*p=lin;
long long prod();
long long numar();
long long eval()//sum
{
	long long r=prod();
	while (*p=='-'||*p=='+')
	{
		if (*p=='-')
		{
			p++;
			r=r-prod();
		}
		else
		{
			p++;
			r=r+prod();
		}
	}
	return r;		
}
long long prod()//prod
{
	long long r=numar();
	while (*p=='/' || *p=='*')
	{
		if (*p=='*')
		{
			p++;
			r=r*numar();
		}
		else
		{
			p++;
			r=r/numar();
		}
	}
	return r;
}
long long numar()
{
	long long r=0;
	if (*p=='(')
	{
		p++;
		r=eval();
		p++;
	}
	else
		while (isdigit(*p))
		{
			r=r*10+int(*p)-48;
			p++;
		}
	return r;
}
int main(void)
{
	fstream f,g;
	f.open("evaluare.in",ios::in);
	g.open("evaluare.out",ios::out);
	f.getline(lin,100005);
	g<<eval();
	
}