Cod sursa(job #2000376)

Utilizator Moise_AndreiMoise Andrei Moise_Andrei Data 13 iulie 2017 14:57:44
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
ifstream in("cmls.in");
ofstream out("cmls.out");
int f1();
int f2();
string s;
int i;
int f3()
{
    int nr = f1();
    while(s[i] == '+' || s[i] == '-')
    {
        if(s[i] == '+')
        {
            ++i;
            nr += f1();
        }
        else
        {
            ++i;
            nr -= f1();
        }
    }
    return nr;
}
int f1()
{
    int nr = f2();
    while(s[i] == '*' || s[i] == '/')
    {
        if(s[i] == '*')
        {
            ++i;
            nr *= f2();
        }
        else
        {
            ++i;
            nr /= f2();
        }
    }
    return nr;
}
int f2()
{
    int nr = 0;
    if(s[i] == '(')
    {
        ++i;
        nr = f3();
        ++i;
    }
    else
    {
        while(s[i] >= '0' && s[i] <= '9')
        {
            nr = nr * 10 + s[i] - '0';
            ++i;
        }
    }
    return nr;
}

int main()
{
    in >> s;
    out << f3();
    return 0;
}