Cod sursa(job #793230)

Utilizator gherghe94Andrei Gherghelau gherghe94 Data 2 octombrie 2012 12:56:20
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <cstdio>
#include <ctype.h>
int i;
char a[100001];

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

int exp()
{
    int k = termen();
    while(a[i] == '+' || a[i] == '-')
    {

        if(a[i] == '+'){
            i++;
            k+=termen();
        }
        else{
            i++;
            k-=termen();
        }
    }
    return k;
}
int termen()
{
    int k = factor();
    while(a[i] == '*' || a[i] == '/')
    {

        if(a[i] == '*'){
            i++;
            k*=factor();
        }
        else{
            i++;
            k/=factor();
        }
    }
    return k;
}
int factor()
{
    int k = 0 ;
    if(a[i] == '(')
    {
        i++;
        k = exp();
        i++;
    }
    while(isdigit(a[i]))
    {
        int c = a[i]-'0';
        k = k * 10 + c;
        ++i;
    }
    return k;
}

int main()
{
    freopen("evaluare.in", "r" , stdin);
    freopen("evaluare.out","w",stdout);
    gets(a);
    printf("%d", exp());

    return 0;
}