• Domingo 15 de Diciembre de 2024, 04:37

Autor Tema:  Números Palindrómicos  (Leído 2541 veces)

Nevhazovat

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Números Palindrómicos
« en: Viernes 12 de Enero de 2007, 00:21 »
0
Saludos a todos.

Tengo que hacer un programa que pida un número n por teclado y escriba a continuación los n primeros números capicúa o palindrómicos. ¿Alguien tiene una idea de como puedo iniciarlo?

Gracias por la atención.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Números Palindrómicos
« Respuesta #1 en: Viernes 12 de Enero de 2007, 02:07 »
0
con un while, un contador, una bandera, un ciclo for dentro del while.-

Así lo hago yo.  :)

 :huh: ¿No te quedó claro?

 :angry: No pidas tareas entonces....

Si ya tenés alguna idea con todo gusto te ayudamos pero nadie te va a dar el código así como así.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Nevhazovat

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Re: Números Palindrómicos
« Respuesta #2 en: Viernes 12 de Enero de 2007, 02:17 »
0
Cita de: "Angel_K_ido"
con un while, un contador, una bandera, un ciclo for dentro del while.-

Así lo hago yo.  :)

 :huh: ¿No te quedó claro?

 :angry: No pidas tareas entonces....

Si ya tenés alguna idea con todo gusto te ayudamos pero nadie te va a dar el código así como así.

He estado mirándolo y podría ser algo así:

Código: Text
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int es_capicua(char *cadena);
  5.  
  6. int main()
  7. {
  8.      int i, numero;
  9.      char *cadena;
  10.    
  11.      printf("Ingrese numero: ");
  12.      scanf("%d", &numero);
  13.  
  14.      printf("Numeros capicua: ");
  15.      for(i=1; i<=numero; i++)
  16.      {
  17.           sprintf(cadena, "%d", i);
  18.  
  19.           if(es_capicua(cadena))
  20.              printf("%d ", i);
  21.      }
  22.  
  23.      fflush(stdin);
  24.      getchar();
  25.      return 0;
  26. }
  27.  
  28. int es_capicua(char *cadena)
  29. {
  30.    int i;
  31.    char *invertida;
  32.  
  33.    /* Halla la cadena invertida */
  34.    for(i=0; i < strlen(cadena); i++)
  35.        invertida[ i ]=cadena[strlen(cadena)-i-1];
  36.  
  37.    /* Coloca caracter de fin de cadena */
  38.    invertida[ i ] = '\0';
  39.  
  40.    /* Realiza la comparacion */
  41.    if(!strcmp(cadena, invertida))
  42.      return 1; /* es capicua*/
  43.          
  44.    return 0;  /* no es capicua */
  45. }
  46.  

De esta manera consigo que me devuelva todos los capicúa hasta el inmediatamente inferior al introducido. Pero me gustaría que me mostrase los que yo haya introducido por teclado. Es decir, si meto el valor 5, me saque: 1,2,3,4 y 5 que son los 5 primeros y así sucesivamente.

Gracias por la atención.

Nevhazovat

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Re: Números Palindrómicos
« Respuesta #3 en: Viernes 12 de Enero de 2007, 02:39 »
0
Bueno, ya lo conseguí. Dejo el código por si a alguien le interesa.

Código: Text
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int es_capicua(char cadena[20]);
  5.  
  6. int main()
  7. {
  8.     long i, total=0, numero;
  9.     char cadena[20];
  10.  
  11.     printf("Ingrese numero: ");
  12.     scanf("%ld", &numero);
  13.  
  14.     printf("Numeros capicua: ");
  15.     for(i=1; total<numero; i++)
  16.     {
  17.     sprintf(cadena, "%ld", i);
  18.  
  19.     if(es_capicua(cadena))
  20.     {
  21.         printf("%ld ", i);
  22.       total++;
  23.     }
  24.      }
  25.  
  26.     fflush(stdin);
  27.     getchar();
  28.     return 0;
  29. }
  30.  
  31. int es_capicua(char cadena[20])
  32. {
  33.   int i;
  34.   char invertida[20];
  35.  
  36.   /* Halla la cadena invertida */
  37.   for(i=0; i < strlen(cadena); i++)
  38.      invertida[ i ]=cadena[strlen(cadena)-i-1];
  39.  
  40.   /* Coloca caracter de fin de cadena */
  41.   invertida[ i ] = '\0';
  42.  
  43.   /* Realiza la comparacion */
  44.    if(!strcmp(cadena, invertida))
  45.     return 1; /* es capicua */
  46.  
  47.   return 0;  /* no es capicua */
  48. }
  49.  

hano

  • Miembro activo
  • **
  • Mensajes: 87
    • Ver Perfil
Re: Números Palindrómicos
« Respuesta #4 en: Viernes 12 de Enero de 2007, 12:15 »
0
Hola:

No hace mucho estuve jugando con palíndromos, y colgué el código (en Java) de varios métodos para tratar con ellos:

http://es.geocities.com/luisja80/esp/palindromo.htm

Aprovecho este post para que los que estéinteresados en la algorítmica, le echéis un vistazo a Concursos De Programación, Grupo De Entrenamiento.

Un saludo.

Luis Javier López Arredondo
http://es.geocities.com/luisja80
http://hardprogrammer.blogspot.com
                                                                                               
Para programadores
http]
[url=https://hardprogrammer.blogspot.com]https]

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Números Palindrómicos
« Respuesta #5 en: Viernes 12 de Enero de 2007, 12:53 »
0
Cita de: "Nevhazovat"
Bueno, ya lo conseguí. Dejo el código por si a alguien le interesa.

Código: Text
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int es_capicua(char cadena[20]);
  5.  
  6. int main()
  7. {
  8.     long i, total=0, numero;
  9.     char cadena[20];
  10.  
  11.     printf("Ingrese numero: ");
  12.     scanf("%ld", &numero);
  13.  
  14.     printf("Numeros capicua: ");
  15.     for(i=1; total<numero; i++)
  16.     {
  17.     sprintf(cadena, "%ld", i);
  18.  
  19.     if(es_capicua(cadena))
  20.     {
  21.         printf("%ld ", i);
  22.       total++;
  23.     }
  24.      }
  25.  
  26.     fflush(stdin);
  27.     getchar();
  28.     return 0;
  29. }
  30.  
  31. int es_capicua(char cadena[20])
  32. {
  33.   int i;
  34.   char invertida[20];
  35.  
  36.   /* Halla la cadena invertida */
  37.   for(i=0; i < strlen(cadena); i++)
  38.      invertida[ i ]=cadena[strlen(cadena)-i-1];
  39.  
  40.   /* Coloca caracter de fin de cadena */
  41.   invertida[ i ] = '\0';
  42.  
  43.   /* Realiza la comparacion */
  44.    if(!strcmp(cadena, invertida))
  45.     return 1; /* es capicua */
  46.  
  47.   return 0;  /* no es capicua */
  48. }
  49.  
Buenas maestro.

Perdón por pensar que no querías hacer nada por tu cuenta.

 :hola:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Nevhazovat

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
Re: Números Palindrómicos
« Respuesta #6 en: Viernes 12 de Enero de 2007, 12:57 »
0
Me debes una  :D

Gracias de todas formas.