Cod sursa(job #1899209)

Utilizator ImbuzanRaduImbuzan Radu ImbuzanRadu Data 2 martie 2017 16:31:36
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>

using namespace std;

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

char expr[1000];
int poz=0;

int factor();
int gr2();
int paranteze();

int main()
{
    f.getline(expr,1000);
    g<<factor();
    return 0;
}

int factor()
{int r=gr2();
while(expr[poz]=='+' || expr[poz]=='-')
    {
        if(expr[poz]=='+')
            {++poz;
            r+=gr2();}
        else {++poz;r-=gr2();}
    }
    return r;
}

int gr2()
{
int r=paranteze();
while(expr[poz]=='*' ||expr[poz]=='/')
    {
        if(expr[poz]=='*') {++poz;r*=paranteze();}
        else
            {++poz;
            r/=paranteze();
            }
    }
    return r;
}


int paranteze()
{ int r=0;
    if ( expr[poz] == '(' ) {
        ++poz;
        r = factor();
        ++poz;
    } else {
        while (isdigit(expr[poz]) )  {
            r = r*10 + (expr[poz] - '0');
            ++poz;
        }
    }
    return r;
}