Cod sursa(job #2862217)

Utilizator EduardSanduSandu Eduard Alexandru EduardSandu Data 5 martie 2022 00:28:39
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.41 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

int contor;
char s[100002];


long long expresie();
long long produs();
long long suma();

long long expresie()
{
    if(isdigit(s[contor]))
    {
        long long nr = 0;
        while(isdigit(s[contor]))
        {
            nr = nr * 10 + (s[contor] - '0');
            contor++;
        }
        return nr;
    }
    else if(s[contor] == '(')
    {
        contor++;
        //o iau de la capat
        long long x = suma();
        contor++;
        return x;
    }
}

long long produs()
{
    long long temp = expresie();
    while(s[contor] == '*' || s[contor] == '/')
    {
        if(s[contor] == '*')
        {
            contor++;
            temp *= expresie();
        }
        else if(s[contor] == '/')
        {
            contor++;
            temp /= expresie();
        }
    }
    return temp;
}


long long suma()
{
    int temp = produs();
    while(s[contor] == '+' || s[contor] == '-')
    {
        if(s[contor] == '+')
        {
            contor++;
            temp += produs();
        }
        else if(s[contor] == '-')
        {
            contor++;
            temp -= produs();
        }
    }
    return temp;
}



int main()
{
    int n,i,j,k;
    fin.getline(s, 100002);
    fout<<suma();
    return 0;
}