Cod sursa(job #3193034)

Utilizator popuPop Matei Tudor popu Data 13 ianuarie 2024 20:16:59
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

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

string s;
int poz;
int add();
int mult();
int op();

int add()
{
    int rez=mult();

    while(s[poz]=='+' || s[poz]=='-')
    {
        if(s[poz]=='+')
        {
            ++poz;
            rez+=mult();
        }
        else
        {
            ++poz;
            rez-=mult();
        }
    }

    return rez;
}

int mult()
{
    int rez=op();

    while(s[poz]=='*' || s[poz]=='/')
    {
        if(s[poz]=='*')
        {
            ++poz;
            rez*=op();
        }
        else
        {
            ++poz;
            rez/=op();
        }
    }

    return rez;
}

int op()
{
    int rez=0;

    if(s[poz]=='(')
    {
        ++poz;
        rez=add();
        ++poz;
    }
    else
    {
        while(isdigit(s[poz]))
        {
            rez*=10;
            rez+=s[poz]-'0';
            ++poz;
        }
    }

    return rez;
}

int main()
{
    fin>>s;
    fout<<add();

    return 0;
}