Cod sursa(job #2939293)

Utilizator AlexiaPAlexia Papadie AlexiaP Data 13 noiembrie 2022 14:02:58
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 f("evaluare.in");
ofstream g("evaluare.out");
char e[100010];
int c;
int suma(), produs(), factor(), numar();
int main()
{
    f>>e;
    g<<suma();
    return 0;


}
int suma()
{
    int ret=produs();
    while(e[c]=='+' || e[c]=='-')
    {
        if(e[c]=='+')
        {
            c++;
            ret+=produs();
        }
        else
        {
            c++;
            ret-=produs();
        }
    }
    return ret;
}
int produs()
{
    int ret=factor();
    while(e[c]=='*' || e[c]=='/')
    {
        if(e[c]=='*')
        {
            c++;
            ret*=factor();
        }
        else
        {
            c++;
            ret/=factor();
        }
    }
    return ret;
}
int factor()
{
    //cazul 1:factorul este o paranteza(suma de termeni)
    if(e[c]=='(')
    {
        c++;
        int ret=suma();
        c++;
        return ret;///dupa evaluarea parantezei cursorul ajunge pe ')'.Trec peste.
    }
    ///cazul 2:factorul este un numar
    return numar();
}
int numar()
{
    int ret=0;
    while(isdigit(e[c]))
    {
        ret=10*ret+e[c]-'0';
        c++;
    }
    return ret;
}