• Domingo 19 de Mayo de 2024, 17:52

Autor Tema:  Cadena Invertida Puntero  (Leído 1626 veces)

jose_c27

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Cadena Invertida Puntero
« en: Viernes 31 de Agosto de 2007, 16:17 »
0
Saludos, soy bien nuevo en el mundo de la programacion y actualmente en la universidad estoy viendo punteros los cuales he visto muy poco....quisiera saber si me pudieran dar una idea con punteros de como podria realizar un programa que reciba una cadena y la imprima invertida, no puedo utilizar strlen, stcpy, strcat.

Muchas Gracias por adelantado

Bond

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Cadena Invertida Puntero
« Respuesta #1 en: Viernes 31 de Agosto de 2007, 20:58 »
0
Cita de: "jose_c27"
Saludos, soy bien nuevo en el mundo de la programacion y actualmente en la universidad estoy viendo punteros los cuales he visto muy poco....quisiera saber si me pudieran dar una idea con punteros de como podria realizar un programa que reciba una cadena y la imprima invertida, no puedo utilizar strlen, stcpy, strcat.

Muchas Gracias por adelantado
Pues yo también estoy aprendiendo así que me he echo yo el programita para practicar, aquí te pego la chapuza  de otro novato en el tema  ;)

Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. int main() {
  5.  
  6.    static char cadena[100], cadinv[100];
  7.    char *pcad = cadena;
  8.    char *pfin = NULL, *pinv = cadinv;
  9.  
  10.    int n = 0, i = 0;
  11.  
  12.    puts("cadena: ");
  13.    gets(pcad);
  14.  
  15.    while(*(pcad+n))
  16.       n++;
  17.  
  18.    n--;
  19.  
  20.    pfin = pcad + n;
  21.  
  22.    while(pfin - pcad)
  23.    {
  24.       *(pinv + i) = *pfin;
  25.       i++;
  26.       pfin--;
  27.    }
  28.    *(pinv + i ) = *pfin;
  29.  
  30.    puts(pinv);
  31.  
  32.    return 0;
  33.  
  34. }
  35.  
  36.  
  37.  
  38.  


Yo lo he planteado así:

un puntero pcad que apunta al inicio de la cadena, otro puntero pfin que apuntará al final de la cadena, y después otro llamado pinv que apunta al nuevo array de caracteres que contendrá la cadena invertida.

Entonces una vez que tienes la dirección del final de la cadena, es recorriendo caracter a caracter y copiandolo al array cadinv apuntado por pinv, hasta que que llegues al inicio de la cadena.


Espero haberte ayudado.

Un saludo

jose_c27

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Cadena Invertida Puntero
« Respuesta #2 en: Sábado 1 de Septiembre de 2007, 04:30 »
0
Muchas gracias por la ayuda pero me resulto complicado entender eso yo lo hice de esta manera:
Código: Text
  1.  
  2. #include "stdio.h";
  3. #include <stdlib.h>
  4.  
  5. int main()
  6. {
  7.  
  8. char *cadena="123456789\0";//aqui esta almacenada la cadena
  9. char *puntero;//puntero a caracter que usaremos para recorrer la cadena
  10. int i;//contador para ver cuntas letras tiene la cadena
  11.  
  12. puntero=cadena;//apuntar al primer caracter de la cadena
  13. i=0;//para comenzar a contar
  14. do{
  15. i++;//contar un caracter mas
  16. puntero++; //ir al siguiente caracter
  17. }while(*puntero!='\0');//hacerlo hasta encontrar el caracter que termina la cadena
  18.  
  19. //aqui puntero sigue apuntando al final de la cadena, asi que vamos a regresarnos un caracter, que es la ultima letra de la palabra
  20. puntero--;
  21. //ahora si a imprimir de atras hacia el principio
  22. do{
  23. printf("%c",*puntero);
  24. i--;//decrementar contador, cuando lelgue a cero es que ya terminamos de imprimir la cadena
  25. puntero--; //ir a la letra anterior
  26. }while(i>0);//hacerlo hasta encontrar el caracter que termina la cadena
  27. system("pause");
  28. }
  29.  
  30.  
  31.  
  32.  
  33.