Cod sursa(job #3197722)

Utilizator eugenioMarinescu Eugenio eugenio Data 27 ianuarie 2024 12:42:32
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>
#include <cstring>
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
using namespace std;
char s[100005];
int k=0;

int expresie();
int termen();
int factor();
int nr();

int expresie()
{
    int aux  = termen();
    while(s[k]=='+' || s[k]=='-')
    {
        if(s[k]=='+')
        {
            k++;
            aux+=termen();
        }
        if(s[k]=='-')
        {
            k++;
            aux-=termen();
        }
    }
    return aux;
}

int termen()
{
    int aux = factor();
    while(s[k]=='*' || s[k]=='/')
    {
        if(s[k]=='*')
        {
            k++;
            aux*=factor();
        }
        if(s[k]=='/')
        {
            k++;
            aux/=factor();
        }
    }
    return aux;
}

int factor()
{
    int rez = 0;
    if(s[k]=='(')
    {
        k++;
        rez = expresie();
        k++;
        return rez;
    }
    else
    {
        return nr();
    }
}

int nr()
{
    int rez = 0;
    while(s[k]>='0' && s[k]<='9')
    {
        rez=rez*10+(s[k]-'0');
        k++;
    }
    return rez;
}

int main()
{
    cin>>s;
    cout<<expresie();
    return 0;
}