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 int main() { 00046 00047 rational<long> r, // último valor ingresado 00048 acum; // acumulador de la calculadora 00049 char op; // operación a efectuar 00050 00051 // inicializa el acumudador 00052 acum = 0; 00053 00054 // despliega el valor inicial del acumulador 00055 cout << acum << " > "; 00056 cin >> op; 00057 00058 00059 // ciclo para leer la siguiente operación a efectuar 00060 while (op != '.') { 00061 // valor a operar con el acumulador 00062 cin >> r; // operator>> (cin, r); 00063 00064 // selección de la operación a realizar 00065 switch (op) { 00066 case '+': acum += r; break; // acum.op += ( r ); 00067 case '-': acum = acum - r; break; // acum.op = (op- (acum, r)); 00068 case '*': acum *= r; break; // acum.op *= ( r ); 00069 case '/': acum = acum / r; break; // acum.op = (op/ (acum, r)); 00070 default: 00071 // operación inválida 00072 cout << "\n(" << op << ")==> Operación inválida\n"; 00073 } 00074 00075 // despliega el nuevo valor del acumulador 00076 cout << acum << " > "; 00077 cin.ignore(INT_MAX, '\n'); 00078 cin >> op; 00079 } 00080 00081 // despliega el valor final del acumulador 00082 cout << acum << " > "; 00083 return 0; 00084 } // main() 00085 00086 /* EOF: rat-calc.cpp */
1.4.1