Cod sursa(job #2135274)

Utilizator mirunafrancescaMiruna mirunafrancesca Data 18 februarie 2018 18:42:14
Problema Evaluarea unei expresii Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

char e[100000];

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

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

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

    return nr;
}

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

    while(e[i]=='/')
    {
        i++;
        nr2=termen(i);
        nr1=nr1/nr2;
    }
    while(e[i]=='*')
    {
        i++;
        nr2=termen(i);
        nr1=nr1*nr2;
    }

    return nr1;

}

int operatie(int &i)
{
    int t1, t2;

    t1=factor(i);
    while(e[i]=='+')
    {
        i++;
        t2=factor(i);
        t1=t1+t2;
    }
    while(e[i]=='-')
    {
        i++;
        t2=factor(i);
        t1=t1-t2;
    }

    return t1;

}

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

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

    return 0;
}