Foros del Web » Programación para mayores de 30 ;) » C/C++ »

no se como comenzar

Estas en el tema de no se como comenzar en el foro de C/C++ en Foros del Web. ayuda con este problema. no se cómo comenzar. un palindromo es un número o una frase de texto que se lee igual hacia adelante y ...
  #1 (permalink)  
Antiguo 25/02/2014, 10:56
 
Fecha de Ingreso: febrero-2014
Ubicación: Guadalajara
Mensajes: 34
Antigüedad: 10 años, 2 meses
Puntos: 0
no se como comenzar

ayuda con este problema. no se cómo comenzar.

un palindromo es un número o una frase de texto que se lee igual hacia adelante y hacia atrás. por ejemplo, cada uno de los siguientes números de cinco dígitos , son palindrimos: 12321,5555,4554, y 11611. escriba un programa que lea números de cinco dígitos y que determine si es o no palndrimo.[pista: utilice los operadores de division y residuo para separar el número en sus digitos individuales]

la verdad no tengo idea de cómo comenzar. ya me maté pensando. ayudenme con consejos de como le pueda hacer y a entenderlo mejor. gracias

nota: ahroita estoy utilizando sentencias if..else y while, es un ejerecicio del libro como programar en c,c++ y java de deitel

Última edición por superchava666; 25/02/2014 a las 11:02
  #2 (permalink)  
Antiguo 25/02/2014, 11:29
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: no se como comenzar

Si el numero es siempre de 5 dígitos haces:

Código C++:
Ver original
  1. int primeros = numero/1000 // te salen los 2 primeros
  2. int ultimos = numero%100 // te salen los 2 ultimos

Asi puedes empezar. Utiliza la misma logica para continuar ya que no te voy a decir como hacer el ejercicio. Intenta lo

Saludos
  #3 (permalink)  
Antiguo 25/02/2014, 11:42
 
Fecha de Ingreso: febrero-2014
Ubicación: Guadalajara
Mensajes: 34
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: no se como comenzar

Cita:
Iniciado por patilanz Ver Mensaje
Si el numero es siempre de 5 dígitos haces:

Código C++:
Ver original
  1. int primeros = numero/1000 // te salen los 2 primeros
  2. int ultimos = numero%100 // te salen los 2 ultimos

Asi puedes empezar. Utiliza la misma logica para continuar ya que no te voy a decir como hacer el ejercicio. Intenta lo

Saludos

bueno. no quiero que me lo digan. sólo quiero que me den una explicación breve del problema , consejos que me ayudarían a hacerlo, cosas así. no quiero que hagan el código y me lo den. solo quiero explicación y ya. yo busco aprender y que mejor si me dan tips y consejos. gracias
  #4 (permalink)  
Antiguo 25/02/2014, 11:58
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: no se como comenzar

Cita:
Iniciado por superchava666 Ver Mensaje
bueno. no quiero que me lo digan. sólo quiero que me den una explicación breve del problema , consejos que me ayudarían a hacerlo, cosas así. no quiero que hagan el código y me lo den. solo quiero explicación y ya. yo busco aprender y que mejor si me dan tips y consejos. gracias
Perdón si me has entendido mal ya se que quieres aprender simplemente me exprese un poco mal educado
Con esto has conseguido hacer lo? Yo lo que haría es a los 2 segundos números cambiar los de lado y ver si son iguales que los 2 primeros.

Saludos
  #5 (permalink)  
Antiguo 25/02/2014, 12:26
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años
Puntos: 49
Respuesta: no se como comenzar

Cita:
Iniciado por superchava666 Ver Mensaje
ayuda con este problema. no se cómo comenzar.

.................................................. ...
. escriba un programa que lea números de cinco dígitos y que determine si es o no palndrimo.[pista: utilice los operadores de division y residuo para separar el número en sus digitos individuales]

.................................................. ..................
l
Al ser de cinco cifras sólo habrá que comprobar que:

* la primera cifra=numero/10000
coincide con la última=numero%10

* y que la segunda cifra=(numero-numero/10000*10000)/1000
coincida con la penúltima=(numero/10)%10))

Ni se te ocurra simplificar los 10000 que aparecen arriba, ya que se trata de una división de enteros. Para que lo visualices:

numero=12345
numero/10000=1
numero-numero/10000*10000=12345-1*10000=2345 y /1000=2 que es la segunda cifra.

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.   int i,digitos=0,numero;
  5.   printf("Introduzca un numero de cinco digitos:\n");
  6.   do{
  7.     scanf("%d",&numero);
  8.     for (i=10;(numero/i)>0;i*=10)
  9.       digitos++;
  10.     if (digitos!=4){
  11.       puts("He dicho de cinco digitos");
  12.       printf("Introduzca un numero de cinco digitos:\n");
  13.     }
  14.   }while (digitos!=4);
  15.   if (numero/10000==numero%10  && ((numero-numero/10000*10000)/1000)==((numero/10)%10))
  16.     printf ("\nES capicua\n");
  17.   else
  18.     printf ("\nNO es capicua\n");
  19.   return 0;
  20. }
  #6 (permalink)  
Antiguo 25/02/2014, 15:43
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: no se como comenzar

Para cualquier número:
Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. bool isPal( int num )
  6. {
  7.     int reverse = 0;
  8.     int tmp =  num;
  9.     while ( tmp > 0 )
  10.     {
  11.         int last = tmp % 10;
  12.         reverse = reverse * 10 + last;
  13.         tmp = tmp / 10;
  14.     }
  15.  
  16.     return reverse == num;
  17. }
  18.  
  19. int main()
  20. {
  21.     int num;
  22.     cout << "Entra en num: ";
  23.     cin >> num;
  24.     if ( isPal(num) )
  25.         cout << "es pal" << endl;
  26.     else
  27.         cout << "no es pal" << endl;
  28.    
  29.     return 0;
  30. }

slds;

nup_
  #7 (permalink)  
Antiguo 26/02/2014, 09:45
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años
Puntos: 49
Respuesta: no se como comenzar

Cita:
Iniciado por superchava666 Ver Mensaje
ayuda con este problema. no se cómo comenzar.

.................................................. ....
nota: ahroita estoy utilizando sentencias if..else y while, es un ejerecicio del libro como programar en c,c++ y java de deitel
Creo que con lo que está usando es un poco fuerte ponerle de entrada una función.

Lo mismo pero sin función:

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.   int i,digitos=0,numero,N,num=0;
  5.   printf("Introduzca un numero de cinco digitos:\n");
  6.   do{
  7.     scanf("%d",&numero);
  8.     for (i=10;(numero/i)>0;i*=10){
  9.       digitos++;
  10.     }
  11.     if (digitos!=4){
  12.       puts("He dicho de cinco digitos");
  13.       printf("Introduzca un numero de cinco digitos:\n");
  14.     }
  15.   }while (digitos!=4);
  16.  
  17.   num=0,N=numero;
  18.   while (N>0){
  19.     num=num*10+N%10;
  20.     N/=10;
  21.     printf("num=%d\n",num);/* observa como se va formando num */
  22.   }
  23.   if (numero==num)
  24.     printf ("\nES capicua\n");
  25.   else
  26.     printf ("\nNO es capicua\n");
  27.  
  28.   return 0;
  29. }

En esencia lo que se hace en el while es ir convirtiendo la variable num en la variable numero pero escrita al revés y ya luego se comparan.

Por ejemplo si numero=54321, y recuerda que N%10 da el último dígito, la variable num inicializa a cero y empieza el while :

* num=0+(54321)%10=0+1=1
N=N/10=54321/10=5432

*actua otra vez el while :
num=1*10+(5432%10)=10+2=12
N=N/10=5432/10=543

*actua otra vez el while :
num=12*10+(543%10)=120+3=123
N=N/10=543/10=54

*actua otra vez el while :
num=123*10+(54%10)=1230+4=1234
N=N/10=54/10=5

*actua otra vez el while :
num=1234*10+(5%10)=12340+5=12345
N=N/10=5/10=0 ==>salgo del while

Resultado: num=12345, justito la variable numero=54321 al reves. Ahora compara y al no ser iguales no es capicua o palindromo.

¡¡¡Saluditos!!!


Última edición por leosansan; 26/02/2014 a las 16:00

Etiquetas: comenzar, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:48.