Gente linda como andan?, espero que anden bien, necesito otra ayudita, el problema dice esto:
La siguiente función imprime de manera iterativa una cadena de caracteres:
void imprimir_iter(char * pcad){
while(*pcad != '\0'){
printf("%c",*pcad);
pcad++;
}
}
a) Realice la versión recursiva de la función anterior.
b) Modifique la función recursiva para que imprima la cadena inv
hasta ahora hice esto y parece que mi pc va a estallar:
void imprimir_ite(char *pcad);
int main()
{
char cad[80];
printf("ingrese la cadena de caracteres\n");
gets(cad);
imprimir_ite(cad);
return 0;
}
void imprimir_ite(char *pcad)
{
if(*pcad!='\0')
{
printf("%c",*pcad);
pcad++;
imprimir_ite(*pcad);
}
return;
}
les cuento en aparecen 2 errores, uno en la linea 21 que dice que estoy definiendo un puntero entero sin conversión??¿ y otro en la 16 que dice que espera un char pero recibe un entero?¿,
es obvio que el problema esta en la arquitectura de mi funcion
Hola antes que nada en el panel cuando redactas un mensaje hay un box que dice Código GeSHi, si lo despliegas aparece una lista de lenguajes buscas C y pegas tu código adentro.
El problema es siguiente:
TU CODIGO
void imprimir_ite(char *pcad)
{
if(*pcad!='\0')
{
printf("%c",*pcad);
pcad++;
imprimir_ite(*pcad);
}
return;
}
En TEORIA Corregido:
void imprimir_ite(char *pcad)
{
if(*pcad!='\0')
{
printf("%c",*pcad);
pcad++;
imprimir_ite(pcad);
}
return;
}
No se, ni verifique tu codigo "ITERATIVO", pero como pcad ya es un apuntador, no necesitas colocarle el * antes de cada uso, eso se puede prestar para otras operaciones pero en este caso no.
Saludos
Funciona!! graciass Alberto!
Por si tienes dudas
te explico para que no exista confusión.
void imprimir_ite(char *pcad)
Se declara que la variable que recibe imprimir_ite es Apuntador char *pcad
if(*pcad!='\0')
*pcad nos indica o devuelve el VALOR apuntado por pcad en ese momento para realizar la comparacion
printf("%c",*pcad);
Lo mismo que lo anterior, nos devuelve el valor apuntado por pcad, esto podria ser equivalente a
printf("%c",pcad[0]);
if(pcad[0]!='\0');
pcad++;
Incrementamos el valor de apuntador en 1
imprimir_ite(pcad);
Pasamos como argumento el apuntador pcad, sin * por que con * es el valor apuntado en ese momento. y sin * es el apuntador como tal,
Saludos
graciass de nuevo, claro como el agua!