SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Nevhazovat en Viernes 12 de Enero de 2007, 00:21

Título: Números Palindrómicos
Publicado por: Nevhazovat en Viernes 12 de Enero de 2007, 00:21
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.
Título: Re: Números Palindrómicos
Publicado por: Mollense en Viernes 12 de Enero de 2007, 02:07
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í.
Título: Re: Números Palindrómicos
Publicado por: Nevhazovat en Viernes 12 de Enero de 2007, 02:17
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.
Título: Re: Números Palindrómicos
Publicado por: Nevhazovat en Viernes 12 de Enero de 2007, 02:39
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.  
Título: Re: Números Palindrómicos
Publicado por: hano en Viernes 12 de Enero de 2007, 12:15
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 (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 (http://foros.solocodigo.com/index.php?showtopic=26568).

Un saludo.

Luis Javier López Arredondo
http://es.geocities.com/luisja80 (http://es.geocities.com/luisja80)
http://hardprogrammer.blogspot.com (http://hardprogrammer.blogspot.com)
Título: Re: Números Palindrómicos
Publicado por: Mollense en Viernes 12 de Enero de 2007, 12:53
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:
Título: Re: Números Palindrómicos
Publicado por: Nevhazovat en Viernes 12 de Enero de 2007, 12:57
Me debes una  :D

Gracias de todas formas.