Cod sursa(job #3170373)

Utilizator rastervcrastervc rastervc Data 17 noiembrie 2023 15:05:32
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char c[100050];
int pos;

int add();

int fact()
{
    int res=0;
    if(c[pos]=='(')
    {
        pos++;
        res=add();
        pos++;
    }
    else
    while(c[pos]>='0' and c[pos]<='9')
    {
        res*=10;
        res+=c[pos]-'0';
        pos++;
    }
    return res;
}

int mult()
{
    int res=fact();
    while(c[pos]=='*' or c[pos]=='/')
    {
        if(c[pos]=='*')
        {
            pos++;
            res*=fact();
            
        }
        else
            {
                pos++;
                res/=fact();
            }
    }
    return res;
}

int add()
{
    int res=mult();
    while(c[pos]=='+' or c[pos]=='-')
    {
        if(c[pos]=='+')
        {
            pos++;
            res+=mult();
        }
        else
        {
            pos++;
            res-=mult();
        }
    }
    return res;
}

int main()
{f>>c;
g<<add();
   return 0;
}