Cod sursa(job #312897)

Utilizator irene_mFMI Irina Iancu irene_m Data 7 mai 2009 12:11:26
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream.h>
#include <string.h>
#define MaxN 100009

char S[MaxN],*p=S;

void cit()
{
	ifstream fin("evaluare.in");
	fin.get(S,MaxN,'\n');
	fin.close();
}

long termen();  
long factor(); 

long eval() 
{
	long r = termen();
	while(*p=='+' || *p=='-') 
	{
		switch(*p)
		{
			case '+':
				p++;						
				r+=termen(); 
				break;
			case '-':
				p++;						
				r-=termen();
				break;
		}
	}
	return r;
}

long termen()
{
	long r=factor();
	while(*p=='*' || *p=='/') 
	{
		switch(*p){
			case '*' :
				p++;
				r*=factor();
				break;
			case '/':
				p++;
				r/=factor();
				break;
		}
	}
	return r;
}

long factor() 
{
    long r=0;  
    if(*p == '(')
	{
        p++;
		r=eval(); 
		p++;	
    } 
	else 
	{  
        while(*p>='0' && *p<='9')  
		{		
            r=r*10+*p-'0';  
			p++;
		}
    }  
    return r;
}

int main() { 
	cit();
	ofstream fout("evaluare.out");
	fout<<eval();
	fout.close();
    return 0;
}