Cod sursa(job #2082210)

Utilizator dragos.galeteanu2001Dragos Iulian dragos.galeteanu2001 Data 5 decembrie 2017 20:28:28
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <fstream>

using namespace std;

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

char s[100010], *p=s;

long factor();
long termen();

long evaluare() {
    long rez = termen();
    while ( *p=='+' || *p=='-' ) {
        switch ( *p ) {
            case '+':
                ++p;
                rez += termen();
                break;
            case '-':
                ++p;
                rez -= termen();
                break;
        }
    }
    return rez;
}

long termen() {
    long rez = factor();
    while ( *p=='*' || *p=='/' ) {
        switch ( *p ) {
            case '*' :
                ++p;
                rez *= factor();
                break;
            case '/':
                ++p;
                rez /= factor();
                break;
        }
    }
    return rez;
}

long factor() {
    long rez=0;
    if (*p=='(') {
        ++p;
        rez = evaluare();
        ++p;
    }
    else {
        while ( *p>='0' && *p<='9' )  {
            rez = rez*10 + *p - '0';
            ++p;
        }
    }
    return rez;
}

int main() {
    f>>s;
    g<<evaluare();
    f.close();
    g.close();
    return 0;
}