Cod sursa(job #1135697)

Utilizator SapientiaCHIRILA ADRIAN Sapientia Data 8 martie 2014 11:34:37
Problema Evaluarea unei expresii Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char p[10000];
int i=0;
int nr(int &i);
int eval(int &i);
int termen(int &i);
int factor(int &i);
int main()
{
    f.getline(p,10000);
    f.close();
    g<<eval(i);
    g.close();
    return 0;
}
int nr(int &i)
{
  int ret=0;
  while((int) p[i]>=48 && (int) p[i]<=57)
  {
      ret=ret*10+p[i]-'0';
      ++i;
  }
  return (ret);
}
int eval(int &i)
{
    int r=termen(i);
    while(p[i]=='+' || p[i]=='-')
    if (p[i]=='+') {++i;r=r+termen(i);}
    else {++i;r=r-termen(i);}
    return r;
}
int termen(int &i)
{
   int r=factor(i);
   while(p[i]=='*' || p[i]=='/')
   if (p[i]=='*') {++i;r=r*factor(i);}
   else {++i;r=r/factor(i);}
   return(r);
}
int factor(int &i)
{
    int r;
    if (p[i]=='('){++i;r=eval(i);++i;}
    else r=nr(i);
    return r;
}