Cod sursa(job #1502670)

Utilizator sebinechitasebi nechita sebinechita Data 14 octombrie 2015 21:41:35
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
#define MAX 100010

char c[MAX];
int ptr = 1;

int eval();
int inm();
int nr();

int eval()
{
    int a;
    a = inm();
    while(c[ptr] == '+' || c[ptr] == '-')
    {
        ptr++;
        if(c[ptr - 1] == '+')
            a += inm();
        else
            a -= inm();
    }
    return a;
}

int inm()
{
    int a;
    a = nr();
    while(c[ptr] == '*' || c[ptr] == '/')
    {
        ptr++;
        if(c[ptr - 1] == '*')
            a *= nr();
        else
            a /= nr();
    }
    return a;
}

int nr()
{
    int a;
    if(c[ptr] == '(')
    {
        ptr++;
        a = eval();
        ptr++;
    }
    else
    {
        a = 0;
        while(c[ptr] >= '0' && c[ptr] <= '9')
        {
            a = a * 10 + c[ptr] - '0';
            ptr++;
        }
    }
    return a;
}


int main()
{
    fin >> c + 1;
    fout << eval();
}