Cod sursa(job #3157420)

Utilizator Sara_BalanoiuSara Balanoiu Sara_Balanoiu Data 15 octombrie 2023 15:26:12
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;

char st[100000];
int i;

int adunare();

int factor()
{
    int nr=0;
    if(st[i]=='(')
    {
        i++;
        nr=adunare();
        i++;
    }
    else
    {
        while(st[i]>='0' && st[i]<='9')
        {
          nr=nr*10+(st[i]-'0');
          i++;
        }
    }
    return nr;
}

int inmultire()
{
    int rez=factor();
    while(st[i]=='*' || st[i]=='/')
    {
        if(st[i++]=='*')
            rez*=factor();
        else
            rez/=factor();
    }
    return rez;
}

int adunare()
{
    int rez=inmultire();
    while(st[i]=='+' || st[i]=='-')
    {
        if(st[i++]=='+')
            rez+=inmultire();
        else
            rez-=inmultire();
    }
    return rez;
}

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

    cin.get(st, 100000);
    cout<<adunare();
    return 0;
}