Cod sursa(job #1309995)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 6 ianuarie 2015 12:11:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb

#include <fstream>
using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

int N, sum, val;
char S[100010];
int i, j,  k;

int expresie(); int termen(); int factor();

int expresie(){
    int sum;
    sum = termen();
    while(S[i] == '+' || S[i] == '-'){
        if(S[i] == '+'){
            i ++;
            sum += termen();
        }
        else{
            i ++;
            sum -= termen();
        }
    }
    return sum;
}

int termen(){
    int sum;
    sum = factor();
    while(S[i] == '*' || S[i] == '/'){
        if(S[i] == '*'){
            i ++;
            sum *= factor();
        }
        else{
            i ++;
            sum /= factor();
        }
    }
    return sum;
}

int factor(){
    int sum = 0;
    if(S[i] == '('){
        i ++;
        sum = expresie();
        i ++;
    }
    else{
        while(S[i] >= '0' && S[i] <= '9'){
            sum = sum * 10 + (S[i] - '0');
            i ++;
        }
    }
    return sum;
}

int main(){
    fin >> S + 1;i = 1;
    fout << expresie();
    return 0;
}