Cod sursa(job #2135327)

Utilizator mirunafrancescaMiruna mirunafrancesca Data 18 februarie 2018 19:12:25
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

char e[100005];

int factor(int &i);
int operatie(int &i);

int termen(int &i)
{
    int nr=0;

    if(e[i]=='(')
    {
        i++;
        nr = operatie(i);
        i++;
    }
    else
    {
        while(isdigit(e[i]))
        {
            nr=nr*10+(e[i]-'0');
            i++;
        }
    }

    return nr;
}

int factor(int &i)
{
    int nr1;
    nr1=termen(i);

    while(e[i]=='/' || e[i]=='*')
    {
        i++;
        if(e[i-1]=='*')
          nr1*=factor(i);
        else
          nr1/=factor(i);
    }

    return nr1;

}

int operatie(int &i)
{
    int t1;

    t1=factor(i);
    while(e[i]=='+' || e[i]=='-')
    {
        i++;
        if(e[i-1]=='+')
          t1+=factor(i);
        else
          t1-=factor(i);
    }

    return t1;

}

int main()
{
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);

    int x=0;
    cin.get(e,100005);
    cout<<operatie(x);

    return 0;
}