Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fernaEDLP en 29 Noviembre 2018, 03:13 am



Título: duda con otro función en c
Publicado por: fernaEDLP en 29 Noviembre 2018, 03:13 am
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





















Título: Re: duda con otro función en c
Publicado por: AlbertoBSD en 29 Noviembre 2018, 03:24 am
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

Código
  1. void imprimir_ite(char *pcad)
  2. {
  3.    if(*pcad!='\0')
  4.    {
  5.        printf("%c",*pcad);
  6.        pcad++;
  7.        imprimir_ite(*pcad);
  8.  
  9.    }
  10.    return;
  11. }
  12.  

En TEORIA Corregido:

Código
  1. void imprimir_ite(char *pcad)
  2. {
  3.    if(*pcad!='\0')
  4.    {
  5.        printf("%c",*pcad);
  6.        pcad++;
  7.        imprimir_ite(pcad);
  8.  
  9.    }
  10.    return;
  11. }
  12.  

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


Título: Re: duda con otro función en c
Publicado por: fernaEDLP en 29 Noviembre 2018, 04:01 am
Funciona!! graciass Alberto!


Título: Re: duda con otro función en c
Publicado por: AlbertoBSD en 29 Noviembre 2018, 04:34 am
Por si tienes dudas

te explico para que no exista confusión.


Código:
void imprimir_ite(char *pcad)

Se declara que la variable que recibe imprimir_ite es Apuntador char *pcad
Código:
    if(*pcad!='\0')
 

*pcad nos indica o devuelve el VALOR apuntado por pcad en ese momento para realizar la comparacion
Código:
        printf("%c",*pcad);
Lo mismo que lo anterior, nos devuelve el valor apuntado por pcad, esto podria ser equivalente a

Código:
 printf("%c",pcad[0]);

Código:
    if(pcad[0]!='\0');


Código:
        pcad++;
Incrementamos el valor de apuntador en 1


Código:
        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


Título: Re: duda con otro función en c
Publicado por: fernaEDLP en 29 Noviembre 2018, 04:40 am
graciass de nuevo, claro como el agua!