Cod sursa(job #2876007)

Utilizator Bogdan197Putineanu Bogdan Bogdan197 Data 22 martie 2022 20:27:53
Problema Evaluarea unei expresii Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.32 kb
#include <iostream>
#include <fstream>

using namespace std;


char sir[100001];
char *p = sir;

int inmultire();
int expresie();


int adunare()
{
    int rezultat = inmultire();
    while(*p == '+' || *p == '-')
    {
        switch(*p){
            case '+':
                p++;
                rezultat+=inmultire();
            case '-':
                p++;
                rezultat-=inmultire();
        }
    }
    return rezultat;
}

int inmultire()
{
    int rezultat = expresie();
    while(*p == '*' || *p == '/')
    {
        switch(*p){
            case '*':
                p++;
                rezultat*=expresie();
                break;
            case '/':
                p++;
                rezultat/=expresie();
                break;
        }
    }
    return rezultat;
}

int expresie()
{
    int rezultat;
    if(*p == '(')
    {
        p++;
        rezultat = adunare();
    }
    else{
        rezultat = 0;
        while(*p <= '9' && *p >= '0')
        {
            rezultat = rezultat*10 + int(*p) - 48;
            p++;
        }
    }
    return rezultat;
}


int main()
{
    ifstream in("evaluare.in");
    ofstream out("evaluare.out");
    in.getline(sir, 100000);
    int rezultat = adunare();
    out << rezultat;
    return 0;
}