Cod sursa(job #1782764)

Utilizator medicinedoctoralexandru medicinedoctor Data 18 octombrie 2016 15:48:46
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <string>
#include <fstream>

using namespace std;

string s;
int p=0;

int f2() ;
int f3() ;

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

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

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

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

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

main()
{
    lire();
    ecrire();
}