[C con Clase] recursividad

Yolmer Rosales yolmer.rosales en gmail.com
Mar Mar 22 18:35:47 CET 2016


marcelinux gracias por tu aporte... pero es un ejercicio de "recursividad"
no tiene ninguna gracia hacerlo iterativo. de cualquier forma te agradezco
mucho


El 22 de marzo de 2016, 11:34, marcelinux <marcelinator en gmail.com> escribió:

> El pasado 2016-03-20 11:07:07, yolmer escribió:
>
> y> En otro orden de ideas para resolver el ejercicio tuve que crear un par
> de
> y> funciones más una para truncar la cadena y otra para añadir un caracter,
>
> Ya que has propuesto una solución, me atrevo a ofrecer mi versión.
> No es como Salvador propone.
> De hecho, primero se me ocurrió sin recursividad, con un simple for.
> Después lo intentaré con su sugerencia y mostraré el resultado aquí.
>
> // Dada una cadena, invertir el orden de sus caracteres.
> #include <iostream>
>
> void invertir_con_for(char *cad);
> void invertir_con_recursividad_1(char *ori, char *des, int pos);
>
> int main(int argc, char *argv[])
> {
>         if (argc > 1) {
>                 std::cout << "La cadena a invertir es:" << argv[1] <<
> std::endl;
>                 char *cadena = new char[strlen(argv[1])];
>                 std::strcpy(cadena, argv[1]);
>                 invertir_con_for(cadena);
>                 std::cout << "Y la invertida, mediante un bucle for, es:"
> << cadena << std::endl;
>                 std::strcpy(cadena, argv[1]);
>                 char *nuevacadena = new char[strlen(argv[1])];
>                 nuevacadena[strlen(argv[1])] = '\0';
>                 invertir_con_recursividad_1(cadena, nuevacadena, 0);
>                 std::cout << "Y la invertida, mediante recursividad, es:"
> << nuevacadena << std::endl;
>                 //delete cadena;
>         }
>         std::cout << "Fin." << std::endl;
>         return 0;
> }
>
> void invertir_con_for(char *cadena) {
>         char *tmp = new char[strlen(cadena)];
>         std::strcpy(tmp, cadena);
>         int j = 0;
>         for (int i = strlen(cadena) - 1; i > -1; i--) {
>                 cadena[j++] = tmp[i];
>         }
>         cadena[j] = '\0';
>         //delete tmp;
> }
>
> void invertir_con_recursividad_1(char *origen, char *destino, int
> posicion) {
>         int l_cad = strlen(origen);
>         if ( posicion < l_cad) {
>                 destino[posicion] = origen[l_cad - posicion -1];
>                 invertir_con_recursividad(origen, destino, ++posicion);
>         }
> }
>
> :">
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20160322/52b4894d/attachment.html>


Más información sobre la lista de distribución Cconclase