Cod sursa(job #1823144)

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

using namespace std;

char s[100005];

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

long getSum(const int& n, int& i){
    long 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("evaluare.in");
    ofstream fout("evaluare.out");
    fin>>s + 1;
    int n = strlen(s + 1);
    int i = 1;
    fout<<getSum(n, i);
    return 0;
}