Cod sursa(job #1201009)

Utilizator toncuvasileToncu Vasile toncuvasile Data 24 iunie 2014 11:53:09
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
using namespace std;

char s[100005];
char *p = s;

long eval();
long termen();
long factor();

long eval(){
    long r = termen();
    while(*p == '+' || *p == '-'){
        if(*p == '+') {
            p++;
            r = r + termen();
        }
        if(*p == '-') {
            p++;
            r = r - termen();
        }
    }

    return r;
}

long termen(){
    long r = factor();
    while ( *p=='*' || *p=='/' ){
        if(*p == '*'){
            p++;
            r = r * factor();
        }
        if(*p == '/'){
            p++;
            r = r / factor();
        }
    }

    return r;
}

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

int main(){
    ifstream inFile("evaluare.in");
    ofstream outFile("evaluare.out");
    inFile >> s;


    outFile << eval();
}