Cod sursa(job #2906834)

Utilizator CReaper1116Shang Cheng Lin CReaper1116 Data 27 mai 2022 16:32:14
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
//#include <iostream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char v[100000];
int i,n = 0,cnt1 = 0,cnt2 = 0;
int solve();
int f(){
    int r = 0;
    if(v[i] == '('){
        i++;
        r = solve();
        i++;
    }else while(i < n && '0' <= v[i] && v[i] <= '9'){
        r = r*10 + v[i] - '0';
        i++;
    }
    return r;
}
int inm(){
    int nr = f();
    while(i < n && (v[i] == '*' || v[i] == '/')){
        i++;
        if(v[i - 1] == '*'){
            nr*=f();
        }else{
            nr/=f();
        }
    }
    return nr;
}
int solve(){
    int nr = inm();
    while(i < n && (v[i] == '+' || v[i] == '-')){
        i++;
        if(v[i - 1] == '+'){
            nr+=inm();
        }else{
            nr-=inm();
        }
    }
    return nr;
}
int main()
{
    while(fin>>v[n++]);
    i = 0;
    fout<<solve();
    return 0;
}