Cod sursa(job #3189742)

Utilizator SIret_LucaSiret Luca SIret_Luca Data 6 ianuarie 2024 14:33:32
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <fstream>
#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() {
    ifstream fin("evaluare.in");
    ofstream fout("evaluare.out");
    fin>>s;
    long long rezultat;
    rezultat=ecuatie();
    fout<<rezultat;
    fin.close();
    fout.close();
    return 0;
}