Cod sursa(job #1471117)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 august 2015 04:27:44
Problema Evaluarea unei expresii Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.65 kb
#include<stdio.h>
#include<stdlib.h>
char *s;
int E(char *&p) {
	int T(char*&);
	char c;
	int w,r=T(p);
	if(!(*p))
    	return r;
	while((c=*p)=='+'||c=='-')
		w=T(++p),r=(c=='+'?(r+w):(r-w));
	return r;
}
int T(char *&p) {
	int F(char*&);
	char c;
	int w,r=F(p);
	if(!(*p))
    	return r;
	while((c=*p)=='*'||c=='/')
      	w=F(++p),r=(c=='*'?(r*w):(r/w));
	return r;
}
int F(char *&p) {
	int r;
	if(*p=='(') {
		r=E(++p),p++;
      	return r;
	}
	return (int)strtod(p,&p);
}
int main() {
	freopen("evaluare.in","r",stdin),freopen("evaluare.out","w",stdout);
	s=(char*)malloc(100005*sizeof(char));
	gets(s),printf("%d",E(s));
}