Cod sursa(job #2273240)

Utilizator Dragne.Andrei11Dragne Andrei Dragne.Andrei11 Data 31 octombrie 2018 10:53:02
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>

using namespace std;

char c;

int exp();
int factor();
int termen();

int exp()
{
    int val=termen();
    while(c=='+' || c=='-')
    {
        if(c=='+')
        {
            scanf("%c", c);
            val+=termen();
        }
        else if(c=='-')
        {
            scanf("%c", c);
            val-=termen();
        }
    }
    return val;
}

int termen()
{
    int val=factor();
    while(c=='*' || c=='/')
    {
        if(c=='*')
        {
            scanf("%c", c);
            val*=factor();
        }
        else if(c=='/')
        {
            scanf("%c", c);
            val/=factor();
        }
    }
    return val;
}

int factor()
{
    int val=0;
    if(c=='(')
    {
        scanf("%c", c);
        val=exp();
        scanf("%c", c);
    }
    else
    {
        while(c>='0' && c<='9')
        {
            val=val*10+c-'0';
            scanf("%c", c);
        }
    }
    return val;
}

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

    scanf("%c", c);
    printf("%d", exp());

    return 0;
}