Cod sursa(job #2142782)

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

char e[100005];
char *p=e;

long long int factor();
long long int operatie();

long long int termen()
{
    long long int nr=0;

    if(*p=='(')
    {
        p++;
        nr=operatie();
        p++;
    }
    else
    {
        while(isdigit(*p))
        {
            nr=nr*10+(*p-'0');
            p++;
        }
    }

    return nr;
}

long long int factor()
{
    long long int nr1;
    nr1=termen();

    while(*p=='/' || *p=='*')
    {
        if(*p=='*')
         {
             p++;
             nr1*=factor();
         }
        else
        {
            p++;
            nr1/=factor();
        }
    }

    return nr1;

}

long long int operatie()
{
    long long int t1;

    t1=factor();
    while(*p=='+' || *p=='-')
    {
        if(*p=='+')
        {
             p++;
             t1+=factor();
        }
        else
        {
            p++;
          t1-=factor();
        }
    }

    return t1;

}

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

    cin.get(e,100005);
    cout<<operatie();

    return 0;
}