Cod sursa(job #2982826)

Utilizator bitza1247Stanciu-Tivlea Valentin Gabriel bitza1247 Data 20 februarie 2023 22:45:39
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
#define nivelmaxim 2

using namespace std;

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

char op[4][4]={ "+-", "*/", "^", "" };
char s[100010], *p =s;

int eval(int a,int b,char c)
{
    if(c=='+')
        return a+b;
    if(c=='-')
        return a-b;
    if(c=='*')
        return a*b;
    if(c=='/')
        return a/b;
}

int expresie(int nivel)
{
    int x, y;
    if(nivel==nivelmaxim)
    {
        if(*p=='(' )
        {
            p++;
            x=expresie(0);
            p++;
        }
        else
        {
            x=0;
            while(isdigit(*p))
            {
                x=x*10+(*p-'0');
                p++;
            }
        }
    }
    else
    {
        x=expresie(nivel+1);
        while(strchr(op[nivel],*p))
        {
            y=eval(x,expresie(nivel+1),*p++);
            x=y;
        }
    }
    return x;
}

int main()
{
    f>>s;
    s[strlen(s)]='\n';
    g<<expresie(0);
    return 0;
}