Cod sursa(job #729794)

Utilizator DEYDEY2Tudorica Andrei DEYDEY2 Data 30 martie 2012 09:40:15
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream.h>
#define dim 50001
long v[dim],k;
ifstream f("evaluare.in");
char x;
void eval(char stop,long jos);

long numar()
{char y;
f.get(y);
if(y=='('){x='+'; eval(')',k);f.get(x);return v[k];}
else
 {long r=0;
  while(y!='\n')
   {if((y>='0')&&(y<='9'))
    r=r*10+(y-'0');
    else break;
    f.get(y);
    }
  x=y;
  return r;
 }
}

void eval(char stop,long jos)
{long y;
while(x!=stop)
 {if(x=='*'){y=numar();v[k-1]*=y;}
  else if(x=='/'){y=numar();v[k-1]/=y;}
  else if(x=='-'){y=numar();v[k]=-y;k++;}
  else if(x=='+'){y=numar();v[k]=y;k++;}
 }
if(x==stop)
 {k--;
  for(long i=k;i>jos;i--)
   v[jos]+=v[i];
  k=jos;
 }
}
int main()
{k=1;x='+';
eval('\n',0);
f.close();
ofstream g("evaluare.out");
g<<v[0]<<'\n';
g.close();
return 0;
}