Cod sursa(job #2047041)

Utilizator AndreiSorin26012001Cirpici Andrei Sorin AndreiSorin26012001 Data 24 octombrie 2017 14:55:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("evaluare.in");
ofstream out("evaluare.out");

char s[100005];
int i;

int expresie();
int termen();
int factor();

int factor(){

    int r = 0;

    if( s[i] == '(' ){
        i++;
        r = expresie();
        i++;
    } else {

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

    return r;
}

int termen(){

    int r = factor();

    while( s[i] == '*' || s[i] == '/' )
        if( s[i] == '*' ){
            i++;
            r *= factor();
        } else {
            i++;
            r /= factor();
        }

    return r;
}

int expresie(){

    int r = termen();

    while( s[i] == '+' || s[i] == '-' )
        if( s[i] == '+' ){
            i++;
            r += termen();
        } else {
            i++;
            r -= termen();
        }

    return r;
}

int main()
{
    in>>s;
    out<< expresie();

    return 0;
}