Cod sursa(job #1562050)

Utilizator Mihai7Gheoace Mihai Mihai7 Data 4 ianuarie 2016 19:21:05
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<cstdio>
using namespace std;
#define MAX 100001
char sir[MAX],*p=sir;
int termen(),factor();
int eval()
{int r=termen();
while(*p=='+'||*p=='-')
	switch(*p)
	{case '+':++p;
		r+=termen();
		break;
	case'-':++p;
	r-=termen();
	break;
	}
	return r;
}
int termen()
{int r=factor();
while(*p=='*'||*p=='/')
	switch(*p)
	{case '*':++p;
		r*=factor();
		break;
	case '/':++p;
		r/=factor();
		break;
	}
	return r;
}
int factor()
{int r=0;
if(*p=='(')
	{++p;
	r=eval();
	++p;
	}
	else while(*p>='0'&&*p<='9')
		{r=r*10+*p-'0';
		++p;
		}
return r;
}
int main()
{fgets(sir,100001,fopen("evaluare.in","r"));
fprintf(fopen("evaluare.out","w"),"%d",eval());
}