Cod sursa(job #555732)

Utilizator theodora_maneaManea Theodora Maria theodora_manea Data 15 martie 2011 18:42:33
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#include <string.h>

int i,n;
char s[100001];

int termen();
int factor();

int expresie() {
	int x;
	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;
	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;
	x=0;
	if (s[i]=='(') {
		i++;
		x=expresie();
		i++;
	}
	else {
		x=0;
		while (s[i]>='0' && s[i]<='9') {
			x=x*10+s[i]-48;
			i++;
		}
	}
	return x;
}

int main() {
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	gets(s);
	i=0;
	printf("%d\n",expresie());
	return 0;
}