Cod sursa(job #3278004)

Utilizator robertcosacCosac Robert-Mihai robertcosac Data 18 februarie 2025 14:32:13
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <fstream>
#include <string>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
string s;
int poz;
long long termen();
long long eval();
long long factor();
long long eval ()
{
    long long rez=termen();
    while (s[poz]=='+' || s[poz]=='-')
    {
        if (s[poz]=='+')
        {
            poz++;
            rez+=termen();
        }
        if (s[poz]=='-')
        {
            poz++;
            rez-=termen();
        }
    }
    return rez;
}
long long termen()
{
    long long rez=factor();
    while (s[poz]=='*' || s[poz]=='/')
    {
        if (s[poz]=='*')
        {
            poz++;
            rez*=factor();
        }
        else
        {
            poz++;
            rez/=factor();
        }
    }
    return rez;
}
long long factor ()
{
    int rez=0;
    if (s[poz]=='(')
    {
        poz++;
        rez=eval();
        poz++;
    }
    else
    {
        while (isdigit(s[poz]))
        {
            rez=10*rez+s[poz]-'0';
            poz++;
        }
    }
    return rez;
}
int main()
{
    f >> s;
    g << eval();
}