Cod sursa(job #697360)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 29 februarie 2012 08:07:56
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
#define dim 100002
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char S[dim];
char *p=S;
int termen();
int  factor();
int eval (){
	long r=termen();
	while(*p=='+' || *p =='-'){
		switch(*p){
			
         	case '+':
				++p;
				r+=termen();
		    case '-':
				++p;
				r-=termen();
		}
	}
	return r;
}
int termen (){
	long r=factor();
	while(*p=='*' || *p=='/'){
		switch (*p){
			
		    case '*':
				++p;
				r*=factor();
			case '/':
				++p;
				r/=factor();
		}
	}
	return r;
}
int factor(){
	long r=0;
	if(*p=='(')
		r+=eval();
	else{
		while(*p>='0' && *p<='9')
			r=r*10 + *p-'0';
		++p;
	}
	return r;
}
int main (){
	f>>S;
	g<<eval();
	return 0;
}