Cod sursa(job #1294614)

Utilizator robertstrecheStreche Robert robertstreche Data 17 decembrie 2014 21:39:54
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

#define lmax 100005

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

int i;
char s[lmax];

int produs();
int eval();

inline int paranteza()
{
    int rez=0;

    if (s[i]=='(')
      {
          i++;
          rez=eval();
          i++;
      }
    else
     while (s[i]>='0' && s[i]<='9')
      rez=rez*10+(s[i++]-48);

    return rez;
}

inline int produs()
{
    int valoare=paranteza();

    while (s[i]=='*' || s[i]=='/')
     if (s[i++]=='*')
       valoare*=paranteza();
     else
       valoare/=paranteza();

   return valoare;
}

inline int eval()
{
    int valoare=produs();

    while (s[i]=='+' || s[i]=='-')
     if (s[i++]=='+')
      valoare+=produs();
     else
       valoare-=produs();

   return valoare;
}

int main()
{
    f>>s;

    g<<eval();

    f.close();
    g.close();
}