Cod sursa(job #662366)

Utilizator lily3Moldovan Liliana lily3 Data 16 ianuarie 2012 16:48:57
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
using namespace std;

int k=0;
char a[100010];
int evaluare();
int valoare()
{
	int rez=0;
	while(a[k]>='0'&&a[k]<='9')
		rez=rez*10+(a[k]-'0'),k++;
	return rez;
}
int factor()
{
	int rez=0;
	if(a[k]=='(')
	{
		k++;
		rez=evaluare();
		k++;
	}
	else
		rez=valoare();
	return rez;
}
int termen()
{
	int rez=factor();
	while(a[k]=='*'||a[k]=='/')
	{
		if(a[k++]=='*')
			rez*=factor();
		else
			rez/=factor();
	}
	return rez;
}
int evaluare()
{
	int rez=termen();
	while(a[k]=='+'||a[k]=='-')
	{
		if(a[k++]=='+')
			rez+=termen();
		else
			rez-=termen();
	}
	return rez;
}
int main()
{
	FILE *f=fopen("evaluare.in","r");
	FILE *g=fopen("evaluare.out","w");
	fscanf(f,"%s",&a);
	fprintf(g,"%d\n",evaluare());
	return 0;
}