Cod sursa(job #3189738)

Utilizator SIret_LucaSiret Luca SIret_Luca Data 6 ianuarie 2024 14:31:48
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <string>
using namespace std;

int i;
string s;
long long ecuatie();
long long termen();
long long factor();
long long cf();

long long ecuatie() {
    long long rez;
    rez=termen();
    while (s[i]=='+'||s[i]=='-') {
        if (s[i]=='+') {
            i++;
            rez=rez+termen();
        }
        if (s[i]=='-') {
            i++;
            rez=rez-termen();
        }
    }
    return rez;
}

long long termen() {
    long long rez;
    rez=factor();
    while (s[i]=='*'||s[i]=='/') {
        if (s[i]=='*') {
            i++;
            rez=rez*factor();
        }
        if (s[i]=='/') {
            i++;
            rez=rez/factor();
        }
    }
    return rez;
}

long long factor() {
    long long rez;
    if (s[i]=='(') {
        i++;
        rez=ecuatie();
        i++;
    }
    else {
        rez=cf();
    }
    return rez;
}
long long cf(){
    long long rez=0;
    while (s[i]>='0' && s[i]<='9') {
        rez=rez*10;
        rez=rez+s[i]-'0';
        i++;
    }
    return rez;
}
int main() {
    cin>>s;
    long long rezultat;
    rezultat=ecuatie();
    cout<<rezultat;
    return 0;
}