Cod sursa(job #186752)

Utilizator zbarniZajzon Barna zbarni Data 28 aprilie 2008 19:09:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream.h>
#define g 100005
int p;
char e[g];

int evaluare(),termen(),factor();
int main()
 {
  ifstream be ("evaluare.in");
  ofstream ki ("evaluare.out");
  be.getline (e,g,'\n');
  be.close();
  ki<<evaluare()<<'\n';
  ki.close();
  return 0;
 }

int evaluare()
 {
  int r=termen();
  while (e[p]=='+'||e[p]=='-')
    if (e[p]=='+')
      {
       p++;
       r+=termen();
      }
    else
      {
       p++;
       r-=termen();
      }
  return r;
 }
int termen()
 {
  int r=factor();
  while (e[p]=='*'||e[p]=='/')
    {
     if (e[p]=='*')
       { ++p;
	 r*=factor(); }
     else
       { ++p;
	 r/=factor(); }
    }
  return r;
 }
int factor ()
 {
  int r=0;
  if (e[p]=='(')
    {
     ++p;
     r=evaluare();
     ++p;
    }
  else
    while (e[p]>='0'&&e[p]<='9')
      {
       r=r*10+e[p]-48;
       ++p;
      }
  return r;
 }