Cod sursa(job #524441)

Utilizator theodora_maneaManea Theodora Maria theodora_manea Data 21 ianuarie 2011 15:35:50
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <stdio.h>
#include <string.h>

const int max=100001;
char s[100001];
int i,n,sol;

int termen();
int factor();

int expresie() {
	int x=termen();
	while (s[i]=='+' || s[i]=='-') {
		if (s[i]=='+') {
			i++;
			x+=termen();
		}
		else
			if (s[i]=='-') {
				i++;
				x-=termen();
			}
	}
	return x;
}

int termen() {
	int x=factor();
	while (s[i]=='*' || s[i]=='/') {
		if (s[i]=='*') {
			i++;
			x*=factor();
		}
		else 
			if (s[i]=='/') {
				i++;
				x/=factor();
			}
	}
	return x;
}

int factor() {
	int x=0;
	if (s[i]=='(') {
		i++;
		x=expresie();
		i++;
	}
	else {
		while (s[i]>='0' && s[i]<='9') {
			x=x*10+s[i]-48;
			i++;
		}
	}
	return x;
}
	
int main () {
	FILE *f=fopen("evaluare.in","r");
	FILE *g=fopen("evaluare.out","w");
	i=0;
	fgets(s,max,f);
	n=strlen(s);
	sol=expresie();
	fprintf(g,"%d\n",sol);
	return 0;
}