Cod sursa(job #723563)

Utilizator ColcerPColcer Paul ColcerP Data 25 martie 2012 16:45:21
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <fstream>
#include <cstdio>
using namespace std;

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

long produs();
long evaluare();
long numar();
char caracter;

long evaluare(){
    long nr = produs();

    while((caracter == '+' || caracter == '-')){

        if (caracter == '+'){

            f>>caracter;
            nr=nr + produs();
        }
        if (caracter == '-' ){

            f>>caracter;
            nr = nr - produs();
        }
    }
    return nr;
}

long produs(){
    long nr = numar();

    while (caracter == '*' || caracter == '/'){

        if (caracter == '*'){

            f>>caracter;
            nr = nr * numar();
        }
        if (caracter == '/'){

            f>>caracter;
            nr = nr / numar();
        }
    }
    return nr;
}

long numar(){
    long nr = 0;
    if(caracter == '('){

        f>>caracter;
        nr = evaluare();
        f>>caracter;
    }
    else{
        while ((caracter >= '0') && (caracter <= '9') && (!f.eof())){

            nr = nr * 10 + (caracter - '0');
            f>>caracter;
        }
    }
    return nr;
}

int main(){


    f>>caracter;
    g<<evaluare();

    f.close();
    g.close();
    return 0;
}