Cod sursa(job #2136832)

Utilizator andrei_diaconu11Andrei C. Diaconu andrei_diaconu11 Data 20 februarie 2018 11:45:52
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;

string s;
string::iterator it;
int expresie();
int termen();
int factor();
int numar();

ifstream fi("evaluare.in");
ofstream fo("evaluare.out");

int expresie(){
    int sum = termen();
    while(*it == '+' || *it == '-')
        sum += termen();
    return sum;
}

int termen(){
    int prod = factor();
    while(*it == '*' || *it == '/'){
        if(*it == '*'){
            it++;
            prod *= factor();
        }
        else{
            it++;
            prod /= factor();
        }
    }
    return prod;
}

int factor(){
    int val, semn = 1;
    while(*it == '+' || *it == '-'){
        if(*it == '-')
            semn = -semn;
        it++;
    }
    if(*it == '('){
        it++;
        val = expresie();
        it++;
        return semn * val;
    }
    val = numar();
    return val * semn;
}

int numar(){
    int val = 0;
    while(isdigit(*it)){
        val = val * 10 + *it - '0';
        it++;
    }
    return val;
}

int main()
{
    fi >> s;
    it = s.begin();
    fo << expresie();
    return 0;
}