[C con Clase] recursividad

Yolmer Rosales yolmer.rosales en gmail.com
Sab Mar 26 13:45:31 CET 2016


>
>
> He probado tu solución con esta invocación y me devuelve una cadena de
> mayor tamaño, y por tanto, con basura al inicio.
> int main(int argc, char *argv[]) {
>         if (argc > 1) {
>                 char *inv = new char[strlen(argv[1])];
>                 char *aux = new char[strlen(argv[1])];
>                 char *cad = new char[strlen(argv[1])];
>                 strcpy(cad, argv[1]);
>                 inv = voltea(cad, inv, aux);
>                 std::cout << "La cadena original :" << cad << std::endl;
>                 std::cout << "La cadena invertida:" << inv << std::endl;
>         }
>         std::cout << "Fin." << std::endl;
>         return 0;
> }
>
> El resultado es:
> La cadena original :caso
> La cadena invertida:════²²²²♠osac
> Fin.
>
>
No lo comprendo la he utilizado muchas veces y en ningún caso obtengo
basura puede tener algo que ver que le coloco un valor inicial a la cadena
donde voy a guardar el valor de retorno = "\0"

Aparte de eso, con strcpy(&aux[i],&cad[i]);
> estás copiando las direcciones de un caracter de cada cadena (si no me
> equivoco)
>

con esto estaba intentando copiar un sólo caracter pero no funciona luego
lo escribí en la otra función sin usar strcpy

>
> Y strcpy(&aux[i],"\0");
> creo que no es lo correcto. Debería ser como lo tienes en la siguiente
> función, con cad[sz+1] = '\0';
>
> Otro detalle importante es: if (i = tam)
> Estás asignando tam a i, en lugar de compararlos: if (i == tam)
>
>
esto fue lo mas increible así me trabajó bien el código pero al corregirlo
no funcionó más así que tuve que hacer un cambio

char *strtrc(char *cad, char *aux)
{
int tam = strlen(cad);
tam--;                             //el largo de la cadena menos uno me
posiciona en el último caracter
        strcpy(aux,cad);            //utilizo el aux para no machacar la
cadena
aux[tam ] = '\0';             //borro el último caracter y lo sustituyo por
el caracter nulo
return aux;
};
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20160326/e51f7aac/attachment.html>


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