Cod sursa(job #1139872)

Utilizator mihai995mihai995 mihai995 Data 11 martie 2014 16:08:35
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
using namespace std;

const int N = 100000;

char s[N], *poz;

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

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

int expresie(){
    int ans = termen();
    while (*poz == '+' || *poz == '-')
        if (*poz == '+'){
            ++poz;
            ans += termen();
        } else {
            ++poz;
            ans -= termen();
        }
    return ans;
}

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

int factor(){
    int ans = 0;
    if ( *poz == '('){
        ans = expresie();
        poz++;
        return ans;
    }
    while ( cifra(*poz) ){
        ans = ans * 10 + *poz - '0';
        poz++;
    }
    return ans;
}

int main(){
    in >> s;
    poz = s;
    out << expresie() << "\n";
    return 0;
}