Cod sursa(job #1313268)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 10 ianuarie 2015 14:50:23
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>
#include <cstring>
#define lgmax 100005
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[lgmax];
int i;

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

int expresie() {
    int r;
    r = termen();
    while (s[i]=='+'||s[i]=='-') {
        if (s[i]=='+') {
            i++;
            r+=termen();
        } else {
            i++;
            r-=termen();
        }
    }

    return r;
}

int termen() {
    int r;
    r = factor();
    while (s[i]=='*'||s[i]=='/') {
        if (s[i]=='*') {
            i++;
            r*=factor();
        } else {
            i++;
            r/=factor();
        }
    }

    return r;
}

int factor() {
    int r;
    if (s[i] == '(') {
        i++;
        r = expresie();
        i++;

    } else {
        r = 0;
        while (s[i] >= '0' && s[i] <= '9') {
            r = r*10 + s[i]-'0';
            i++;
        }
    }
    return r;
}

int main()
{
    int i,j;
    //f.getline(s,lgmax);
    f>>s;

    i = 0;
    g<<expresie();

    return 0;
}