Cod sursa(job #1144855)

Utilizator dyanagGrigore Diana dyanag Data 17 martie 2014 17:59:59
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<cstdio>
#include<cstring>

FILE *f=fopen("evaluare.in", "r");
FILE *g=fopen("evaluare.out", "w");

int poz, n;
char s[100001];

int f3();
int f2();

int f1(){
	int sum=f2();
	while(s[poz]=='+'||s[poz]=='-'&&poz<n){
		char c=s[poz];
		++poz;
		int x=f2();
		if(c=='-')
			sum-=x;
		else
			sum+=x;
	}
	return sum;
}

int f2(){
	int p=f3();
	while(s[poz]=='*'||s[poz]=='/'&&poz<n){
		int c=s[poz];
		++poz;
		int x=f3();
		if(c=='*')
			p*=x;
		else
			p/=x;
	}
	return p;
}

int f3(){
	int val=0;
	if(s[poz]=='('){
		++poz;
		val=f1();
		++poz;
		return val;
	}
	int c=s[poz]-'0';
	while(0<=c&&c<=9&&poz<n){
		val=val*10+c;
		++poz;
		c=s[poz]-'0';
	}
	return val;
}

int main()
{
	fscanf(f, "%s", s);
	n=strlen(s);
	poz=0;
	fprintf(g, "%d", f1());
return 0;
}