Cod sursa(job #1512984)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 28 octombrie 2015 21:07:29
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>
using namespace std;

char q[100010];
int dd;

int f1();
int f2();
int f3();

int main()
{

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

    int n, i, j, s, t, d;

    scanf("%s",q);
    printf("%d",f3( ));


    return 0;
}


int f3(){

    int r = f2( );

    while( q[dd] == '+' || q[dd] == '-' )
        if( q[dd] == '+' ) dd++, r += f2( );
        else dd++, r -= f2( );

    return r;

}


int f2(){

    int r = f1( );

    while( q[dd] == '*' || q[dd] == '/' )
        if( q[dd] == '*' ) dd++, r *= f1( );
        else dd++, r /= f1( );

    return r;

}


int f1(){

    int r;

    if( q[dd] == '(' ){
        dd++;
        r = f3(  );
        dd++;
        return r;
    }

    r = 0;

    while( q[dd] >= '0' && q[dd] <= '9'  ){
        r = r * 10 + ( q[dd] - '0' );
        dd++;
    }


    return r;

}