Cod sursa(job #2858583)

Utilizator dcovDarius Covaciu dcov Data 27 februarie 2022 21:54:09
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

char s[100010];
int i=0;

int num();
int ord1();
int ord2();

int ord1()
{
    int rez=ord2();

    while(s[i]=='+' || s[i]=='-')
    {
        if(s[i]=='+')
        {
            i++;
            rez+=ord2();
        }
        else if(s[i]=='-')
        {
            i++;
            rez-=ord2();
        }
    }

    return rez;
}

int ord2()
{
    int rez=num();

    while(s[i]=='*' || s[i]=='/')
    {
        if(s[i]=='*')
        {
            i++;
            rez*=num();
        }
        else if(s[i]=='/')
        {
            i++;
            rez/=num();
        }
    }

    return rez;
}

int num()
{
    int rez=0;

    if(s[i]=='(')
    {
        i++;
        rez=ord1();
        i++;
    }
    else
    {
        while(s[i]>='0' && s[i]<='9')
        {
            rez=rez*10+(s[i]-'0');
            i++;
        }
    }

    return rez;
}

int main()
{
    f.getline(s,100010);

    g<<ord1();

    return 0;
}