Cod sursa(job #2026132)

Utilizator xRoALexBirtoiu Alexandru xRoALex Data 23 septembrie 2017 19:05:15
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <fstream>

using namespace std;

string A;
int i;

int expresie();

int factor()
{
    if(A[i]=='(') {
        i++;
        int t = expresie();
        i++;
        return t;
    }

    int nr = 0;

    while('0'<=A[i] && A[i]<='9') {
        nr = nr*10 + (A[i]-'0');
        i++;
    }

    return nr;
}


int termen()
{
    int produs = factor();
    while(i<A.size() && (A[i]=='*' || A[i]=='/')) {
        if(A[i]=='*') {
            ++i;
            int y = factor();
            produs *= y;
        }
        else if(A[i]=='/') {
            ++i;
            int y = factor();
            produs /= y;
        }
    }
    return produs;
}

int expresie()
{
    int suma = termen();
    while(i<A.size() && (A[i]=='+' || A[i]=='-')) {
        if(A[i]=='+') {
            ++i;
            int y = termen();
            suma += y;
        }
        else if(A[i]=='-') {
            ++i;
            int y = termen();
            suma -= y;
        }
    }
    return suma;
}


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

int main()
{
    f>>A;
    g<<expresie();
    return 0;
}