<div dir="ltr">marcelinux gracias por tu aporte... pero es un ejercicio de "recursividad" no tiene ninguna gracia hacerlo iterativo. de cualquier forma te agradezco mucho<div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">El 22 de marzo de 2016, 11:34, marcelinux <span dir="ltr"><<a href="mailto:marcelinator@gmail.com" target="_blank">marcelinator@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">El pasado 2016-03-20 11:07:07, yolmer escribió:<br>
<br>
y> En otro orden de ideas para resolver el ejercicio tuve que crear un par de<br>
y> funciones más una para truncar la cadena y otra para añadir un caracter,<br>
<br>
Ya que has propuesto una solución, me atrevo a ofrecer mi versión.<br>
No es como Salvador propone.<br>
De hecho, primero se me ocurrió sin recursividad, con un simple for.<br>
Después lo intentaré con su sugerencia y mostraré el resultado aquí.<br>
<br>
// Dada una cadena, invertir el orden de sus caracteres.<br>
#include <iostream><br>
<br>
void invertir_con_for(char *cad);<br>
void invertir_con_recursividad_1(char *ori, char *des, int pos);<br>
<br>
int main(int argc, char *argv[])<br>
{<br>
        if (argc > 1) {<br>
                std::cout << "La cadena a invertir es:" << argv[1] << std::endl;<br>
                char *cadena = new char[strlen(argv[1])];<br>
                std::strcpy(cadena, argv[1]);<br>
                invertir_con_for(cadena);<br>
                std::cout << "Y la invertida, mediante un bucle for, es:" << cadena << std::endl;<br>
                std::strcpy(cadena, argv[1]);<br>
                char *nuevacadena = new char[strlen(argv[1])];<br>
                nuevacadena[strlen(argv[1])] = '\0';<br>
                invertir_con_recursividad_1(cadena, nuevacadena, 0);<br>
                std::cout << "Y la invertida, mediante recursividad, es:" << nuevacadena << std::endl;<br>
                //delete cadena;<br>
        }<br>
        std::cout << "Fin." << std::endl;<br>
        return 0;<br>
}<br>
<br>
void invertir_con_for(char *cadena) {<br>
        char *tmp = new char[strlen(cadena)];<br>
        std::strcpy(tmp, cadena);<br>
        int j = 0;<br>
        for (int i = strlen(cadena) - 1; i > -1; i--) {<br>
                cadena[j++] = tmp[i];<br>
        }<br>
        cadena[j] = '\0';<br>
        //delete tmp;<br>
}<br>
<br>
void invertir_con_recursividad_1(char *origen, char *destino, int posicion) {<br>
        int l_cad = strlen(origen);<br>
        if ( posicion < l_cad) {<br>
                destino[posicion] = origen[l_cad - posicion -1];<br>
                invertir_con_recursividad(origen, destino, ++posicion);<br>
        }<br>
}<br>
<br>
:"><br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" rel="noreferrer" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" rel="noreferrer" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</div></div></blockquote></div><br></div>