Cod sursa(job #1823165)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 5 decembrie 2016 23:27:55
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 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);
        i++;
    }else{
        ret = getNumber(n, i);
    }
    while(strchr("*/+-)", s[i]) != NULL && i <= n){
        switch(s[i]){
            case '*':
                i++;
                ret = ret * getNumber(n, i);
                break;
            case '/':
                i++;
                ret = ret / getNumber(n, i);
                break;
            case '+':
                i++;
                ret = ret + getSum(n, i);
                break;
            case '-':
                i++;
                ret = ret - getSum(n, i);
                break;
            case ')':
                i++;
                return ret;
                break;
        }
    }
    return ret;
}

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