/////// File: Calculator.C /////// // a simple calculator #include "Calculator.h" void Calculator::on() { char op; double number; cf->show_number(eng->output()); // top-level cycle int ind; while ( (ind = cf->input(op, number, ! *eng)) != CalcFace::OFF ) { perform(ind, op, number); } } void Calculator::perform(int ind, char op, double number) { if ( ind != CalcFace::OPONLY ) eng->operand( number ); eng->operate( op ); number = ( op == 'c' || op == 'C' ) ? 0 : eng->output(); if ( ! *eng ) treat_error(); else { op = eng->operation(); if ( op == '=' ) cf->show_op(' '); else cf->show_op(op); cf->show_number(number); } } void Calculator::treat_error() { cf->show_error(); }