/* 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 */