Cod sursa(job #677970)

Utilizator predator5047Butiu Alexandru Octavian predator5047 Data 10 februarie 2012 20:49:05
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
#include <iostream>
#include <fstream>
#include <cctype>
#define IN "evaluare.in"
#define OUT "evaluare.out"
using namespace std;

string exp;
string::iterator it;
int unu();  int doi();  int trei();
void citire();

int main()
{
    citire();
    ofstream fout(OUT);

    fout<<unu();

    fout.close();
    return 0;
}

int trei()
{
    int x = 0;
    if(*it == '(')
    {
        ++it;
        x = unu();
        ++it;
    }
    else
        while(isdigit(*it) )
        {
            x = x *10 + (*it - '0');
            ++it;
        }
    return x;
}

int doi()
{
    int r = trei();
    while(*it == '*' || *it == '/' )
    {
        switch(*it)
        {
            case '*':
                ++it;
                r *= trei();
                break;
            case '/':
                ++it;
                r /= trei();
                break;
        }
    }
    return r;
}

int unu()
{
    int r = doi();
    while(*it == '+' || *it == '-')
    {
        switch(*it)
        {

            case '+':
                ++it;
                r += doi();
                break;
            case '-':
                ++it;
                r -= doi();
                break;
        }
    }
    return r;
}

void citire()
{
    ifstream fin(IN);
    fin>>exp;
    fin.close();

    it = exp.begin();
}