Cod sursa(job #2926241)

Utilizator carinamariaCarina Maria Viespescu carinamaria Data 17 octombrie 2022 13:20:55
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
int i, j, n, m, poz;
char s[100005];
int expresie();
int factor();
int termen();
int expresie(){
    int a=termen();
    int b;
    while(s[poz]=='+' || s[poz]=='-'){
        if(s[poz] == '+'){
            poz++;
            b = termen();
            a=a+b;
        }else if(s[poz]=='-'){
            poz++;
            b=termen();
            a=a-b;
        }
    }
    return a;

}
int termen(){
    int a=factor();
    int b;
    while(s[poz]=='*' || s[poz]=='/'){
        if(s[poz]=='*'){
            poz++;
            b=factor();
            a=a*b;
        }
        else if(s[poz] == '/'){
            poz++;
            b = factor();
            a = a/b;
        }
    }
    return a;
}

int factor(){
    int a;
    if(s[poz]=='('){
        poz++;
        a=expresie();
        poz++;
    }
    else{
        a=0;
        while(s[poz]>='0' && s[poz]<='9'){
            a=a*10+(s[poz]-'0');
            poz++;
        }
    }
    return a;
}
int main(){
    cin>>s;
    cout<<expresie();
}