Cod sursa(job #155073)

Utilizator rethosPaicu Alexandru rethos Data 11 martie 2008 18:25:21
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <stdio.h>
#include <fstream.h>
#include <string.h>
#define NM 100001
long n,i;
char s[NM];
long suma(long&);
long produs(long&);
long termen(long&);
long suma(long &k)
{ long t=0;
  t=produs(k);
  while (s[k]=='+'||s[k]=='-')
	{ if (s[k]=='+')
		t+=produs(++k);
	  else t-=produs(++k);
	}
  return t;
}
long produs(long &k)
{ long t=0;
  t=termen(k);
  while (s[k]=='*'||s[k]=='/')
	{ if (s[k]=='*')
		t*=termen(++k);
	  else
		t/=termen(++k);
	}
  return t;
}
long termen(long &k)
{ if (s[k]=='(') { long t=suma(++k);
		   k++;
		   return t;
		 }
  else
	{ long t=0;
	  while(s[k]>='0'&&s[k]<='9'&&k<n) t=t*10+s[k++]-'0';
	  return t;
	}
}
int main()
{ freopen("evaluare.in","rt",stdin);
  ofstream g("evaluare.out");
  scanf("%s",s);
  n=strlen(s);
  long x=suma(i);
  g<<x;
  fclose(stdout);
  fclose(stdin);
  return 0;
}