Cod sursa(job #895644)

Utilizator cristicskCsakany Cristian cristicsk Data 27 februarie 2013 12:04:31
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<cstdio>
using namespace std;const long Max=100010;char S[Max], *p=S;long termen();long factor();   long eval() {    long r = termen();    while ( *p=='+' || *p=='-' ) {        switch ( *p ) {             case '+':                ++p;                r += termen();                break;            case '-':                ++p;                 r -= termen();                break;        }    }    return r;}long termen() {    long r = factor();    while ( *p=='*' || *p=='/' ) {        switch ( *p ) {            case '*' :                ++p;                r *= factor();                break;            case '/':                ++p;                r /= factor();                break;        }    }    return r;}  long factor() {    long r=0;    if ( *p == '(' ) {        ++p;        r = eval();        ++p;    } else {        while ( *p>='0' && *p<='9' )  {            r = r*10 + *p - '0';            ++p;        }    }    return r;}int main(){    fgets(S, Max, fopen("evaluare.in", "r"));    long K = eval();    freopen ("evaluare.out", "w", stdout);    printf("%ld\n", K);    fprintf(fopen("evaluare.out", "w"), "%ld\n", eval());    return 0;}