00001 // EnPile.cpp (C) 2005 [email protected] 00002 00003 /** \file EnPile.cpp 00004 \brief Un ejemplo interesante de recursividad 00005 00006 \author Modificaciones por Cristopher Rojas Salas <> 00007 \author Adolfo Di Mare <[email protected]> 00008 \date 2005 00009 00010 \remark Di Mare, Adolfo: 00011 - "Tres formas diferentes de explicar la recursividad" 00012 - Revista Ingeniería, Facultad de Ingeniería, 00013 Universidad de Costa Rica, 00014 Volumen 6, Número 2, pp [31-44], 1996. 00015 - http://www.di-mare.com/adolfo/p/recurse1.htm#otros 00016 */ 00017 00018 #include <iostream> 00019 using namespace std;// Usamos el namespace std que agrupa todas la entidades de la libreria standard c++ 00020 00021 00022 /** Invierte una hilera de letras que lee de \c "cin" 00023 \code 00024 C:\TMP>EnPile 00025 Digite la hilera a invertir: 00026 adolfo. 00027 .ofloda 00028 \endcode 00029 */ 00030 00031 void EnPile() { 00032 /** va leyendo de una palabra introducida una a una las letras y las introduce en la 00033 variablar tipo char (caracter) una a una cada vez que entra en EnPile */ 00034 char ch; // variable local ==> 1 nueva en cada invocación 00035 cin >> ch; // lee otra letra 00036 00037 /** condicion para que volver a llamar a EnPile hasta que encuentre el "." */ 00038 if (ch != '.') { 00039 EnPile(); 00040 } 00041 /** hasta que encuentra el punto en la palabra empieza el proceso de mostrar letra a letra 00042 en pantalla en orden inverso */ 00043 cout << ch;/// muestra el valor de la variable ch en pantalla 00044 } 00045 00046 /** No invierte una hilera de letras que lee de \c "cin" 00047 \code 00048 C:\TMP>EnPile 00049 Digite la hilera a invertir: 00050 adolfo. 00051 ....... 00052 \endcode 00053 */ 00054 00055 /** Este metodo recibe un char referenciado por lo cual al cambiar todos los valores referenciados 00056 no se invierte la cadena */ 00057 void EnPile(char ch) { 00058 cin >> ch; // lee otra letra 00059 cout << ch; // la graba 00060 if (ch != '.') { 00061 EnPile(ch); 00062 } 00063 /** Al mostrar los valores que contiene ch todos han sido cambiados al ultimo valor asignado 00064 al uso de la variable ch referenciada */ 00065 cout << ch; 00066 } 00067 00068 00069 /** Metodo principal del programa donde se ejecutan EnPile() y EnPile(ch) */ 00070 int main() { 00071 char ch=0; 00072 //EnPile(); 00073 EnPile(ch); 00074 00075 system("PAUSE");/// instruccion para que pause el programa al llegar a este punto 00076 return 0; 00077 } 00078 00079 // EOF: EnPile.cpp 00080
1.4.7