Cod sursa(job #1920812)

Utilizator Kln1000Ciobanu Bogdan Kln1000 Data 10 martie 2017 10:15:31
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <string>
#include <iostream>

using namespace std;

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

string::iterator it;
string expresie;

int q();

int interpreter(){
    int x=0;
    if (*it=='('){
        ++it;
        x+=q();
        ++it;
        return x;
    }
    for (;*it>='0' and *it<='9';++it)
        x=10*x+*it-'0';
    return x;
}

int qq(){
    int x=interpreter();
    while (*it=='*' or *it=='/')
        if (*it=='*')
            ++it,
            x*=interpreter();
        else
            ++it,
            x/=interpreter();
    return x;
}

int q(){
    int x=qq();
    while (*it=='-' or *it=='+')
        if (*it=='-')
            ++it,
            x-=qq();
        else
            ++it,
            x+=qq();
    return x;
}

void evaluate(){
    it=expresie.begin();
    int s=q();
    t<<s;
}

int main()
{
    f>>expresie;
    evaluate();
    return 0;
}