Cod sursa(job #1708833)

Utilizator medicinedoctoralexandru medicinedoctor Data 27 mai 2016 23:58:37
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <string>
using namespace std;

string s;
int p=0;

int f2();
int f3();

int f1()
{
    int r=f2();
    while ((p<=(s.length()-1)) && ((s[p]=='+') || (s[p]=='-')))
    {
          p++;
          if (s[p-1]=='+') r=r+f2(); else r=r-f2();
    }
    return r;
}

int f2()
{
    int r=f3();
    while ((p<=(s.length()-1)) && ((s[p]=='*') || (s[p]=='/')))
    {
          p++;
          if (s[p-1]=='*') r=r*f3(); else r=r/f3();
    }
    return r;
}

int f3()
{
    int r=0;
    if (s[p]=='(') { p++; r=f1(); p++; } else
    while ((p<=(s.length()-1)) && (s[p]>='0') && (s[p]<='9'))
    {
          r=r*10 + s[p] - 48;
          p++;
    }
    return r;
}

void ecrire(int x)
{
     ofstream f("evaluare.out");
     f << x;
     f.close();
}

void lire()
{
     ifstream f("evaluare.in");
     f >> s;
     f.close();
     ecrire(f1());
}

int main()
{
    lire();
}