Cod sursa(job #2816061)

Utilizator Linca_AmaliaLinca Mihaela Amalia Linca_Amalia Data 10 decembrie 2021 22:33:01
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
using namespace std;

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

int i;
char s[100005];

int lowpriority();
int midpriority();
int highpriority();

int lowpriority(){
    int r = midpriority();
    while ( s[i] == '+' || s[i] == '-' ){
        if ( s[i] == '+' ){
            i++;
            r += midpriority();
        }
        else{
            i++;
            r -= midpriority();
        }
    }
    return r;
}

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

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

int main(){
    fin >> s;
    i = 0;
    fout << lowpriority();
    return 0;
}