Cod sursa(job #3216046)

Utilizator DR4G0S24Dragos Corsuc DR4G0S24 Data 15 martie 2024 16:40:19
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>

using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");

char sir[100001];

int expresie();
int termen();
int factor();
int constanta();
int i=0;
int main()
{
    fin>>sir;
    fout<<expresie();
    return 0;
}

int expresie()
{
    int x=termen();

    while(sir[i]=='+'||sir[i]=='-')
    {
        if(sir[i]=='+')
        {           i++;
            x=x+termen();

        }
        else
        {i++;
            x=x-termen();

        }
    }
    return x;
}

int termen()
{
    int x=factor();

    while(sir[i]=='*'||sir[i]=='/')
    {
        if(sir[i]=='*')
        {i++;
            x=x*factor();

        }
        else
        {i++;
            x=x/factor();

        }
    }
    return x;
}

int factor()
{
    int x;
    if(sir[i]=='(')
    {
        i++;
        x=expresie();
        i++;
    }
    else
        x=constanta();
    return x;
}
int constanta()
{
    int x=0;
    while(sir[i]>='0'&& sir[i]<='9')
    {
        x=x*10+sir[i]-'0';
        i++;
    }

    return x;
}