[C con Clase] recursividad
marcelinux
marcelinator en gmail.com
Mie Mar 23 11:31:50 CET 2016
El pasado 2016-03-22 17:20:50, yolmer escribió:
y> marcelinux gracias por tu aporte... pero es un ejercicio de "recursividad"
y> no tiene ninguna gracia hacerlo iterativo. de cualquier forma te agradezco
y> mucho
En efecto. Por eso he incluído la segunda función: invertir_con_recursividad_1
También necesito tres parámetros, pero distintos a los tuyos ;-)
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.
Aparte de eso, con strcpy(&aux[i],&cad[i]);
estás copiando las direcciones de un caracter de cada cadena (si no me equivoco)
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)
Siguiéndolo por debug me he dado cuenta de estas cositas.
Espero que te ayude en algo.
Más información sobre la lista de distribución Cconclase