/* rat-calc.cpp (c) 2005 adolfo@di-mare.com */ /** \file rat-calc.cpp La calculadora polimórfica de Adolfo */ /** \mainpage \section rat-calc La calculadora polimórfica de Adolfo Este programa es una calculadora polimórfica muy simple que funciona con los siguientes objetos: - long, int: números enteros - \c rational: números rationales - \c poly: polinomios La calculadora funciona de la siguiente manera: - Al principio el valor acumulado es [ 0 ] - Se puede usar cualquier de los 4 operadores aritméticos - Para terminar se usa el operador de salida punto "." Traza de ejecución: \code [0] > + [ 2 / 3 ] [2/3] > / [ 6 / 2 ] [2/9] > * [ 18 ] [4] > - [ 45 / 9 ] [-1] > / [ 13 / 8 ] [-8/13] > * [ 2 ] [-16/13] > + [ 7 ] [75/13] > . [75/13] > \endcode \author Adolfo Di Mare \date 2004 - Why English names??? ==> http://www.di-mare.com/adolfo/binder/c01.htm#sc04 */ #include "rational.h" #include USING_namespace(ADH); // ADH_port.h ==> using namespace ADH; /// Función principal en la que empieza la ejecución del programa int main() { rational r, // último valor ingresado acum; // acumulador de la calculadora char op; // operación a efectuar // inicializa el acumudador acum = 0; // acum.op=( 0 ); // despliega el valor inicial del acumulador std::cout << acum << " > "; std::cin >> op; // ciclo para leer la siguiente operación a efectuar while (op != '.') { // valor a operar con el acumulador std::cin >> r; // operator>> (cin, r); // selección de la operación a realizar switch (op) { case '+': acum += r; break; // acum.op += ( r ); // op += (acum, r) case '-': acum = acum - r; break; // acum.op = (op- (acum, r)); case '*': acum *= r; break; // acum.op *= ( r ); case '/': acum = acum / r; break; // acum.op = (op/ (acum, r)); default: // operación inválida std::cout << "\n(" << op << ")==> Operación inválida\n"; } // despliega el nuevo valor del acumulador std::cout << acum << " > "; std::cin.ignore(INT_MAX, '\n'); std::cin >> op; } // despliega el valor final del acumulador std::cout << acum << " > "; return 0; } // main() /* EOF: rat-calc.cpp */