elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funcion palíndromo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Funcion palíndromo.  (Leído 21,470 veces)
ollessor

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Funcion palíndromo.
« en: 16 Septiembre 2008, 18:27 pm »

No se como implementar una función que que me detecte si un array de caracteres es palindromo. ¿Sabe alguien como puedo hacerlo?
Gracias. ;D


En línea

byebye


Desconectado Desconectado

Mensajes: 5.093



Ver Perfil
Re: Funcion palíndromo.
« Respuesta #1 en: 16 Septiembre 2008, 19:39 pm »

busca que ya se hablo justo de esto.


En línea

TheMaker


Desconectado Desconectado

Mensajes: 514



Ver Perfil
Re: Funcion palíndromo.
« Respuesta #2 en: 16 Septiembre 2008, 20:27 pm »

Crea un array auxiliar, inserta el original en el auxiliar empezando por el final, con esto el auxiliar tendra el original pero "dado la vuelta", comprueba si original y auxiliar son iguales, si lo son, entonces es palindromo.

Tmb puedes pasar de crear un nuevo array, compara posicion 0 con posicion n-1, 1 con n-2, 2 con n-3 ....  siendo n el numero total de caracteres, si todos son iguales entonces palindromo
« Última modificación: 16 Septiembre 2008, 20:31 pm por TheMaker » En línea

Gibe money please or I report you
Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Funcion palíndromo.
« Respuesta #3 en: 17 Septiembre 2008, 01:43 am »

Esto es una tontería pero bueno...

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define TAMANIO 81
  4.  
  5. //Declaracion de Funciones***************************************************
  6. void Introducir_frase (char frase[])
  7. {
  8. printf ("introducir una frase: ");
  9. gets (frase); fflush (stdin);
  10. }
  11.  
  12. int Comprobar_frase (char frase[])
  13. {
  14. int longitud=strlen(frase);
  15. int i=0;
  16. while (i<=longitud/2 && frase[i]==frase[longitud-1-i])
  17.  {
  18.  i++;
  19.  }
  20. if (i>longitud/2)
  21.   return 1;
  22.   else
  23.   return 0;
  24. }
  25.  
  26. //F.Ppal*********************************************************************
  27. int main (void)
  28. {
  29. char palindroma[81];
  30. Introducir_frase (palindroma);
  31. if (Comprobar_frase (palindroma))
  32. printf ("Dicha frase es palindroma.");
  33. else
  34.  printf ("Dicha frase no es palindroma.");
  35. return 0;
  36. }
  37.  
En línea

ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 184



Ver Perfil
Re: Funcion palíndromo.
« Respuesta #4 en: 17 Septiembre 2008, 02:36 am »

Buenas

Particularmente prefiero la respuesta de Spider a la de TheMaker (aunque tambien es valida) con algunas pequeñisimas modificaciones

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
Ragnarok
Colaborador
***
Desconectado Desconectado

Mensajes: 4.590


Shrödingerificado


Ver Perfil
Re: Funcion palíndromo.
« Respuesta #5 en: 17 Septiembre 2008, 11:50 am »

Esto es una tontería pero bueno...

Si es una tontería al menos hazlo un poco bonito, aunque para gustos los colores, pero por ejemplo habría que cambiar el void como argumento (no se pone) y el if innecesario, es como poner if i<j then return true else return false, se pone return i<j y listo. También el for está para algo, si tiene inicialización, comprobación y modificación de las variables inicializadas lo suyo es usar un for.

No es buena práctica que las funciones devuelvan void, pero tengo un poco de prisa, lo demás puedes verlo por ti mismo.

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define TAMANIO 81
  4.  
  5. //Declaracion de Funciones***************************************************
  6. void Introducir_frase (char frase[]) {
  7. printf ("introducir una frase: ");
  8. gets (frase); fflush (stdin);
  9. }
  10.  
  11. int Comprobar_frase (char frase[]){
  12. int i, l;
  13. for (i = 0, l=strlen(frase); i<=l/2 && frase[i]==frase[l-1-i]; i++);
  14. return i>l/2;
  15. }
  16.  
  17. //F.Ppal*********************************************************************
  18. int main (){
  19.  char palindroma[81];
  20.  Introducir_frase (palindroma);
  21.  printf ("Dicha frase %s es palindroma.", Comprobar_frase(palindroma)?"":"no");
  22.  getchar();
  23.  return 0;
  24. }
« Última modificación: 17 Septiembre 2008, 11:54 am por Ragnarok » En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Funcion palíndromo.
« Respuesta #6 en: 17 Septiembre 2008, 13:04 pm »

Esto es una tontería pero bueno...

Si es una tontería al menos hazlo un poco bonito, aunque para gustos los colores, pero por ejemplo habría que cambiar el void como argumento (no se pone) y el if innecesario, es como poner if i<j then return true else return false, se pone return i<j y listo. También el for está para algo, si tiene inicialización, comprobación y modificación de las variables inicializadas lo suyo es usar un for.

No es buena práctica que las funciones devuelvan void, pero tengo un poco de prisa, lo demás puedes verlo por ti mismo.

Es una tontería, y ese código lo tengo desde que empecé a estudiar programación. Estudio administración de sistemas y esto era uno de los primeros ejercicios que hicimos, así que simplemente lo busqué y lo colgué para ayudar a este compañero. Pero la verdad es que ni lo leí, seguramente se pueda mejorar sí.

PD: No se cual es el problema de poner int main(void) en lugar de int main()
No creo que eso optimice el código pero bueno...
Tampoco sé cual es el problema en que una función no devuelva nada, osea que sea tipo void, yo aprendí a programar así y no entiendo cual es el problema xD.

Pero bueno como tú has dicho, para gustos, los colores...

Saludos!
« Última modificación: 17 Septiembre 2008, 13:09 pm por Spider-Net » En línea

ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 184



Ver Perfil
Re: Funcion palíndromo.
« Respuesta #7 en: 17 Septiembre 2008, 19:14 pm »

Buenas

Creo que para criticar, habria q criticar la actitud del que pidio el programa hecho...

Con respecto a si hay que poner o no void, es cuestion de gustos. Yo personalmente me parece que es mejor aclarar que esa funcion no lleva parametros utilizando void

Con el tema de usar o no void para el valor de retorno estoy entre el si y el no (un depende..). Si bien a veces es muy conveniente, otras no es necesario. Por ejemplo, si en la funcion tirara una excepcion, habria que ver si devolver algun valor es util.

Pero bueno, ya que dejaron el codigo... ahi va el mio XD

Código
  1. int isPalindromo(char *str)
  2. {
  3.     int       i = 0, len = strlen(str);
  4.  
  5.     while( i <= len && tolower(str[i++]) == tolower(str[--len]) );
  6.  
  7.     return i > len;
  8. }
En línea

Connoisseurs of C semantics find C++ inferior to ++C
Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Funcion palíndromo.
« Respuesta #8 en: 17 Septiembre 2008, 20:00 pm »

Jejejeej, pero eso es C++, el mío es en C  :P
En línea

ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 184



Ver Perfil
Re: Funcion palíndromo.
« Respuesta #9 en: 18 Septiembre 2008, 00:50 am »

Jejejeej, pero eso es C++, el mío es en C  :P
C++ ??? donde? Y aunque lo hubiera usado, como te darias cuenta???

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Palindromo con Pilas
Programación C/C++
Muffin 1 14,549 Último mensaje 28 Enero 2011, 02:32 am
por ricardo_b
Duda funcion palindromo
Programación C/C++
cazagavilan 2 2,829 Último mensaje 9 Abril 2012, 16:07 pm
por cazagavilan
palindromo « 1 2 »
Programación C/C++
ALONSOQ 16 11,990 Último mensaje 7 Agosto 2012, 17:52 pm
por X3R4CK3R
Palindromo C++ « 1 2 »
Programación C/C++
Bob1098 11 9,837 Último mensaje 23 Agosto 2014, 22:45 pm
por leosansan
Palindromo
Java
vhh70 7 4,694 Último mensaje 9 Junio 2016, 20:54 pm
por DIANA KARINA HM
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines