Cod sursa(job #2206481)

Utilizator vladth11Vlad Haivas vladth11 Data 22 mai 2018 19:11:00
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>

using namespace std;

ifstream cin("evaluare.in");
ofstream cout("evaluare.out");

string v;
int i;
int expresie();
bool chiarenr(char ch){
    if(ch >= '0' && ch <= '9')
        return true;
    return false;
}
int numar(){
    int nr = 0;
    while(chiarenr(v[i])){
        nr = nr*10+(v[i]-'0');
        i++;
    }
    return nr;
}
int paranteze(){
    int nr;
    if(v[i] == '('){
       i++;
       nr = expresie();
       i++;
    }else{
        nr = numar();
    }
    return nr;
}
int inmultire(){
    int nr = paranteze();
    while(v[i] == '/' || v[i] == '*'){
        i++;
        if(v[i-1] == '/')
            nr /= paranteze();
        else
            nr*=paranteze();
    }
    return nr;
}
int expresie(){
    int nr = inmultire();
    while(v[i] == '-' || v[i] == '+'){
        i++;
        if(v[i-1] == '+')
            nr += inmultire();
        else
            nr -= inmultire();
    }
    return nr;
}
int main()
{
    cin >> v;
    cout << expresie();
    return 0;
}