Cod sursa(job #1661820)

Utilizator Mr.RobotElliot Alderson Mr.Robot Data 24 martie 2016 10:56:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

char s[100010];
int p;

int inmultire();
int paranteze();

int adunare()
{
    int r = inmultire();
    while( s[p] == '+' || s[p] == '-' ){
        if( s[p] == '+' ){
            p++;
            r = r + inmultire();
        }
        else if( s[p] == '-' ){
            p++;
            r = r - inmultire();
        }
    }
    return r;
}

int inmultire()
{
    int r = paranteze();

    while( s[p] == '*' || s[p] == '/' )
    {
        if( s[p] == '*' ){
            p++;
            r = r * paranteze();
        }
        else if( s[p] == '/' ){
            p++;
            r = r / paranteze();
        }
    }
    return r;
}

int paranteze()
{
    int r = 0;
    if( s[p] == '(' )
    {
        p ++;
        r = adunare();
        p ++;
    }
    else
    {
        while( s[p] >= '0' && s[p] <= '9' ){
            r = r * 10 + s[p++] - '0';
        }
    }
    return r;
}


int main()
{
    f >> s;

    g << adunare();
    return 0;
}