Cod sursa(job #1823141)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 5 decembrie 2016 23:11:52
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <fstream>
#include <string.h>

using namespace std;

char s[100005];

int getNumber(const int& n, int& i){
    int ret = 0;
    while(s[i] >= '0' && s[i] <= '9' && i <= n){
        ret = ret * 10 + (s[i] - '0');
        i++;
    }
    return ret;
}

int getSum(const int& n, int& i){
    int ret;
    if(s[i] == '('){
        i++;
        ret = getSum(n, i);
    }else{
        ret = getNumber(n, i);
    }
    if(s[i] == ')'){
        return ret;
    }
    while((s[i] == '*' || s[i] == '/') && i <= n){
        switch(s[i]){
            case '*':
                i++;
                ret = ret * getNumber(n, i);
                break;
            case '/':
                i++;
                ret = ret / getNumber(n, i);
                break;
        }
    }
    if(i > n){
        return ret;
    }
    switch(s[i]){
        case '+':
            i++;
            ret = ret + getSum(n, i);
            break;
        case '/':
            i++;
            ret = ret - getSum(n, i);
            break;
    }
    i++;
    return ret;
}

int main(){
    ifstream fin("home.in");
    ofstream fout("home.out");
    fin>>s + 2;
    int n = strlen(s + 2) + 2;
    s[1] = '(';
    s[n + 2] = ')';
    int i = 1;
    fout<<getSum(n, i);
    return 0;
}