Cod sursa(job #1309880)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 6 ianuarie 2015 09:55:41
Problema Evaluarea unei expresii Scor 0
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[1000010], i, j,  k;
int Expresie(); int Termen(); int Factor();

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

int Termen(){
    int sum = 0;
    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;
}