Cod sursa(job #1455675)

Utilizator Vlad_317Vlad Panait Vlad_317 Data 28 iunie 2015 20:12:28
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <stdio.h>

#define MAX 100001

char s[MAX];
int last=0;

int T();
int F();

int E()
{
    int r = T();
    while( s[last] == '+' || s[last] == '-' )
    {
        if(s[last] == '+' )
        {
            last++;
            r += T();
        }
        else
        {
            last++;
            r -= T();
        }
    }
    return r;
}

int T()
{
    int r = F();
    while( s[last] == '*' || s[last] == '/' )
    {
        if( s[last] == '*' )
        {
            last++;
            r *= F();
        }
        else
        {
            last++;
            r /= F();
        }
    }
    return r;
}

int F()
{
    int r = 0;
    if( s[last] == '(') ///subexpresie
    {
        last++;
        r=E();
        last++;/// pentru ')'
    }
    else
    {
        while(s[last] >= '0' && s[last] <= '9')
        {
            r = r * 10 +  s[last]- '0';
            last++;
        }
    }
    return r;
}

int main()
{
    FILE *fin, *fout;

    fin = fopen ("evaluare.in", "r");
    fout = fopen("evaluare.out", "w");

    fgets (s, MAX, fin);
    fprintf (fout, "%d\n", E());

    return 0;
}