Cod sursa(job #3158561)

Utilizator TheAndreiEnache Andrei Alexandru TheAndrei Data 19 octombrie 2023 00:01:45
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>

#define sMax 100000

using namespace std;

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

char s[sMax];
int sIdx=0;

int adunare();

int factor(){
    int result=0;
    if(s[sIdx]=='('){
        sIdx++;
        result=adunare();
        sIdx++;
    }
    else{
        while(s[sIdx]>='0'&&s[sIdx]<='9'){
            result=result*10+s[sIdx++]-'0';
        }
        return result;
    }
    return result;
}

int inmultire(){
    int result;
    result=factor();

    if(s[sIdx]=='*'||s[sIdx]=='/'){
        if(s[sIdx++]=='*')
            return result*factor();
        else
            return result/factor();
    }

    return result;
}

int adunare(){
    int result=0;
    result=inmultire();

    if(s[sIdx]=='+'||s[sIdx]=='-'){
        if(s[sIdx++]=='+')
            return result+inmultire();
        else
            return result-inmultire();
    }

    return result;
}

int main()
{
    fin>>s;
    fout<<adunare();
    return 0;
}