Cod sursa(job #2703838)

Utilizator pielevladutPiele Vladut Stefan pielevladut Data 9 februarie 2021 12:59:29
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;

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

char s[100100];

int produs, numar, suma, i;

int evaluare();
int termen();
int factor();

int evaluare()
{
    int suma = termen();
    while(s[i] == '+' || s[i] == '-')
    {
        if(s[i] == '+')
        {
            i++;
            suma += termen();
        }
        else if(s[i] == '-')
        {
            i++;
            suma -= termen();
        }
    }
    return suma;
}

int termen()
{
    int produs = factor();
    while(s[i] == '*' || s[i] == '/')
    {
        if(s[i] == '*')
        {
            i++;
            produs *= factor();
        }
        else if(s[i] == '/')
        {
            i++;
            produs /= factor();
        }
    }
    return produs;
}

int factor()
{
    int numar = 0;
    if(s[i] == '(')
    {
        i++;
        numar = evaluare();
        i++;
        return numar;
    }
    else
    {
        while(isdigit(s[i]))
        {
            numar = numar * 10 + s[i] -'0';
            i++;
        }
        return numar;
    }
}

int main()
{
    fin >> s;
    fout << evaluare();
}