Cod sursa(job #1294327)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 17 decembrie 2014 12:28:34
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <string.h>
#define NMAX 100023
FILE *fin, *fout;
char s[NMAX], *p;
int eval();
int termen();
int factor();
int main()
{
	fin = fopen("evaluare.in", "r");
	fout = fopen("evaluare.out", "w");
	fgets(s, NMAX, fin);
	p = s;
	fprintf(fout, "%d", eval());
	fclose(fin);
	fclose(fout);
	return 0;
}
int eval()
{
	int r = termen();
	while(*p == '+' || *p == '-')
	{
		if(*p == '+') {p++;r += termen();}
		else {p++;r-=termen();}
	}
	return r;
}
int termen()
{
	int r = factor();
	while(*p == '*' || *p == '/')
	{
		if(*p == '*') {p++;r*=factor();}
		else {p++;r/=factor();}
	}
	return r;
}
int factor()
{
	int r = 0;
	if(*p == '(')
	{
		p++;
		r = eval();
		p++;
	}
	else
	{
		while(*p <= '9' && *p >= '0')
		{
			r = r*10 + *p - '0';
			p++;
		}
	}
	return r;
}