Cod sursa(job #2791913)

Utilizator Ana100Ana-Maria Tomoiala Ana100 Data 31 octombrie 2021 13:25:59
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string str;
int i;
int adunare();
int factor()
{
    int nr;
    if(str[i]=='(')
    {
        i++;
        nr=adunare();
        i++;
    }
    else
    {
    nr=0;
    while(i<str.size() and str[i]>='0' and str[i]<='9')
    {
        nr=nr*10+str[i]-'0';
        i++;
    }
    }
    return nr;
}
int inmultire()
{
    int rez=factor();
    while(str[i]=='*' or str[i]=='/')
    {
        if(str[i++]=='*')
            rez=rez*factor();
        else
            rez=rez/factor();
    }
    return rez;
}
int adunare()
{
    int rez=inmultire();
    while(str[i]=='+' or str[i]=='-')
    {
        if(str[i++]=='+')
            rez+=inmultire();
        else
            rez-=inmultire();
    }
    return rez;
}


int main()
{
    getline(cin,str);
    i=0;
    cout<<adunare();
    return 0;
}