Página principal | Lista de namespace | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros

rat-calc.cpp

Ir a la documentación de este archivo.
00001 /* rat-calc.cpp  (c) 2005 [email protected] */
00002 
00003 /** \file rat-calc.cpp La calculadora polimórfica de Adolfo
00004 */
00005 
00006 /** \mainpage
00007 
00008     \section rat-calc La calculadora polimórfica de Adolfo
00009 
00010     Este programa es una calculadora polimórfica muy simple
00011     que funciona con los siguientes objetos:
00012 
00013     - <code> long, int</code>: números enteros
00014     - \c rational:  números rationales
00015     - \c poly:      polinomios
00016 
00017     La calculadora funciona de la siguiente manera:
00018 
00019     - Al principio el valor acumulado es <code> [ 0 ] </code>
00020     - Se puede usar cualquier de los 4 operadores aritméticos
00021     - Para terminar se usa el operador de salida punto "."
00022 
00023     Traza de ejecución:
00024     \code
00025     [0] > + [ 2 / 3 ]
00026     [2/3] > / [ 6 / 2 ]
00027     [2/9] > * [ 18 ]
00028     [4] > - [ 45 / 9 ]
00029     [-1] > / [ 13 / 8 ]
00030     [-8/13] > * [ 2 ]
00031     [-16/13] > + [ 7 ]
00032     [75/13] > .
00033     [75/13] >
00034     \endcode
00035 
00036     \author Adolfo Di Mare <[email protected]>
00037     \date    2004
00038 
00039     - Why English names??? ==> http://www.di-mare.com/adolfo/binder/c01.htm#sc04
00040 */
00041 #include "rational.h"
00042 #include <limits.h>
00043 
00044 /// Función principal en la que empieza la ejecución del programa
00045 //template <class INT>
00046 int main() {
00047 
00048     rational<int> r,        // último valor ingresado
00049                   acum;     // acumulador de la calculadora
00050     char     op;       // operación a efectuar
00051 
00052     // inicializa el acumudador
00053     acum = 0;
00054 
00055     // despliega el valor inicial del acumulador
00056     cout << acum << " > ";
00057     cin  >> op;
00058 
00059 
00060     // ciclo para leer la siguiente operación a efectuar
00061     while (op != '.') {
00062         // valor a operar con el acumulador
00063         cin >> r;             // operator>> (cin, r);
00064 
00065         // selección de la operación a realizar
00066         switch (op) {
00067             case '+': acum += r;          break; // acum.op += ( r );
00068             case '-': acum  = acum - r;   break; // acum.op  = (op- (acum, r));
00069             case '*': acum *= r;          break; // acum.op *= ( r );
00070             case '/': acum  = acum / r;   break; // acum.op  = (op/ (acum, r));
00071         default:
00072             // operación inválida
00073             cout << "\n(" << op << ")==> Operación inválida\n";
00074         }
00075 
00076         // despliega el nuevo valor del acumulador
00077         cout << acum << " > ";
00078         cin.ignore(INT_MAX, '\n');
00079         cin >> op;
00080     }
00081 
00082     // despliega el valor final del acumulador
00083     cout << acum << " > ";
00084     return 0;
00085 }  // main()
00086 
00087 /* EOF: rat-calc.cpp */

Generado el Thu Aug 30 17:50:35 2007 para A41369- A55609 Tarea Programada 2 por  doxygen 1.4.1
Hosted by www.Geocities.ws

1