Cod sursa(job #2063558)

Utilizator Samuel_DascaluDascalu Samuel Samuel_Dascalu Data 11 noiembrie 2017 12:05:39
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <string>

using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
string sir;
int i;
int aduna();
int produs();
int exp();

int aduna(){
    int rez = produs();
    while(sir[i] == '+' || sir[i] == '-'){
        if(sir[i] == '+'){
            ++i;
            rez = rez+produs();
        }
        else{
            ++i;
            rez = rez-produs();
        }
    }
    return rez;
}
int produs(){
    int rez = exp();
    while(sir[i] == '*' || sir[i] == '/'){
        if(sir[i] == '*'){
            ++i;
            rez = rez*exp();
        }
        else{
            ++i;
            rez = rez/exp();
        }
    }
    return rez;
}
int exp(){
    int rez = 0;
    if(sir[i] == '('){
        ++i;
        rez = aduna();
        ++i;
    }
    else{
        while(sir[i] >= '0' && sir[i] == '9'){
            rez= rez*10 +(sir[i]-'0');
            ++i;
        }
    }
    return rez;
}
int main()
{
    string sir;
    int i;
    f >> sir;
    g << aduna();
    return 0;
}