Cod sursa(job #3216049)

Utilizator L.DimuLuca Dimulescu L.Dimu Data 15 martie 2024 16:41:05
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char sir[1000001];
int expresie();
int termen();
int factor();
int constanta();
int i=0;
int main()
{
   fin.getline(sir,1000001);
   fout<<expresie();
}
int expresie()
{
    int x=termen();
    while(sir[i]=='+' || sir[i]=='-')
    {
        if(sir[i]=='+')
        {
            x=x+termen();
            i++;
        }
        else
        {
            x=x-termen();
            i++;
        }
    }
    return x;
}
int termen()
{
    int x=factor();
    while(sir[i]=='*' || sir[i]=='/')
    {
        if(sir[i]=='*')
        {
            x=x*termen();
            i++;
        }
        else
        {
            x=x/termen();
            i++;
        }
    }
    return x;
}
int factor()
{
     int x;
    if(sir[i]=='(')
    {
        i++;
        x=expresie();
    }
    else
        x=constanta();
    return x;
}
int  constanta()
{
    int x;
    while(sir[i]>='0' && sir[i]<='9')
    {
        x=x*10+sir[i]-'0';
        i++;
    }
    return x;
}