Cod sursa(job #2271097)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 28 octombrie 2018 00:35:15
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
using namespace std;

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

int i,expresie(),termen(),factor();
char v[100001];

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

    return r;
}

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

    return r;
}

int factor(){
    int r=0;
    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;
    fout<<expresie();

    return 0;
}