Cod sursa(job #673096)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 3 februarie 2012 20:58:27
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;

int c;

string s;

int f1();
int f2();
int f3();

int f1()
{
    int sol;
    sol = f2();
    while(s[c] == '+' || s[c] == '-') {
        ++c;
        if(s[c - 1] == '+')
            sol += f2();
        else sol -+ f2();
    }
    return sol;
}

int f2()
{
    int sol;
    sol = f3();
    while(s[c] == '*' || s[c] == '/') {
        ++c;
        if(s[c - 1] == '*')
            sol *= f3();
        else sol /= f3();
    }
    return sol;
}

int f3()
{
    int sol;
    sol = 0;
    if(s[c] == '(') {
       ++c;
       sol = f1();
       ++c;
       return sol;
    }
    if(s[c] >= '0')
        while(s[c] >= '0') {
            sol = sol * 10 + s[c] - '0';
            ++c;
        }
    return sol;
}

int main()
{
    freopen ("evaluare.in", "r", stdin);
    freopen ("evaluare.out", "w", stdout);
    cin >> s;
    printf("%d", f1());
}