Cod sursa(job #1320848)

Utilizator andreator11ilies andreea andreator11 Data 18 ianuarie 2015 16:35:07
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;

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

string s;
int p = 0;

int expresie();
int factor()
{
    int r;
    if (s[p] == '(')
    {
        p++;
        r = expresie();
        p++;
    }
    else
      for (r = 0; '0' <= s[p] and s[p] <= '9'; p++)
        r = 10 * r + s[p] - '0';
   return r;
}

int termen()
{
    int r = factor();
    while (s[p] == '*' or s[p] == '/')
     if (s[p] == '*')
    {   p++;
        r *= factor();
    }
     else
     {  p++;
        r /= factor();
     }
     return r;
}

int expresie()
{
    int r = termen();
    while (s[p] == '+' or s[p] == '-')
     if (s[p] == '+')
    {   p++;
        r += termen();
    }
     else
     {  p++;
        r -= termen();
     }
     return r;
}

int main()
{
    f >> s;
    g << expresie();
    return 0;
}