Cod sursa(job #1829034)

Utilizator alin1999Buzatu Alin alin1999 Data 14 decembrie 2016 11:11:30
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int N, i;
char V[100100];
int expresie();
int termen();
int factor();
int expresie() {
    int r=termen();
    while (V[i]=='+'||V[i]=='-') {
        i++;
        if(V[i-1]=='+')
            r+=termen();
        else
            r-=termen();
    }
    return r;
}

int termen() {
    int r=factor();

    while(V[i]=='*'||V[i]=='/') {
        i++;
        if(V[i-1]=='/')
            r/=factor();
        else
            r*=factor();
    }
    return r;

}

int factor() {
    int r;
    if (V[i]=='(') {
        i++;
        r=expresie();
        i++;
    } else {
        r=0;
        while(V[i]>='0'&&V[i]<='9') {
            r=r*10+V[i]-'0';
            i++;
        }
    }
    return r;
}

int main() {

    fin>>V+1;
    N=strlen(V+1);
    i=1;
    fout<<expresie();
    return 0;
}