Cod sursa(job #2876107)

Utilizator DafinaTrufasTrufas Dafina DafinaTrufas Data 22 martie 2022 23:17:21
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>

using namespace std;

char sir[100001], *p=sir;

long long mul_div();
long long paranteze();

long long add_sub()
{
	long long t = mul_div();
	while(*p=='+' || *p=='-' )
    {
        if(*p == '+')
        {
            ++p;
            t += mul_div();
        }
        else
        {   ++p;
            t -= mul_div();
		}
	}
	return t;
}

long long mul_div()
{
	long long f = paranteze();
	while(*p=='*' || *p=='/')
    {
		if (*p == '*')
		{
            ++p;
            f *= paranteze();
		}
		else
        {   ++p;
            f /= paranteze();
		}
	}
	return f;
}

long long paranteze()
{
    long long nr=0;
    if (*p == '(')
    {
        ++p;
		nr = add_sub();
		++p;
    }
    else
    {
        while(*p>='0' && *p<='9')
        {
            nr = nr * 10 + *p - '0';
			++p;
		}
    }
    return nr;
}

int main()
{ifstream f("evaluare.in");
ofstream g("evaluare.out");
f >> sir;
g << add_sub();
f.close();
g.close();
return 0;
}