domingo, 31 de octubre de 2010

Deitel_Java_4.30 (Números Palíndromos en Java)

_______________________________________________________________________________
4.30 (Palíndromos) Un palíndromo es una secuencia de caracteres que se lee igual al drecho y al revés. Por ejemplo cada uno de los siguientes enteros de cinco dígitos es un palíndromo: 12321, 55555, 4554 y 11611. Escriba una aplicación que lea un entero de cinco dígitos y determine si es palíndromo. Si el número no es de cinco dígitos, el programa debe mostrar un mensaje de error y permitir al usuario que introduzca un nuevo valor.
_______________________________________________________________________________
Solución:
_______________________________________________________________________________
Este archivo debe guardarse con el nombre: UsaEjercicio4_30.java

public class Prueba_Ejercicio4_30
 { // Abre clase Prueba_Ejercicio4_30
 public static void main(String args[])
 { // Abre metodo main
 
 Ejercicio4_30 miObjeto = new Ejercicio4_30("Hola");
 miObjeto.Recibe();
 } // Cierra metodo main
 } // Cierra clase Prueba_Ejercicio4_30


Este archivo debe guardarse con el nombre: Ejercicio4_30.java

import java.util.Scanner;             
              
              
public class Ejercicio4_30            
              
{ // Abre clase Ejercicio4_30          
              
Scanner entrada = new Scanner(System.in);          
              
private String mensaje;            
              
///////////////////////////////////////////////////////////////////////              
//CONSTRUCTOR              
////////////////////////////////////////////////////////////////////////              
              
public Ejercicio4_30( String cadena)           
{ // Abre constructor           
mensaje = cadena;            
} // Cierra constructor           
              
////////////////////////////////////////////////////////////////////////              
//METODO RECIBE             
////////////////////////////////////////////////////////////////////////              
              
public void Recibe()            
{ // Abre metodo Recibe          
int c;             
int num1 = 0;           
int num2 = 0;           
int num3 = 0;           
int num4 = 0;           
int num5 = 0;           
              
System.out.println("\nPor favor introduzca un numero de cinco cifras y le dire si esun palindromo: ");
c = entrada.nextInt();            
              
while ( 9 < c/10000)          
{ // Abre while           
System.out.println("\nEl numero tiene que ser de cinco cifras, por favor introduzcalo nuevamente: ");  
c = entrada.nextInt();            
} // Cierra while           
              
num1 = c / 10000;          
num2 = (c % 10000)/1000;          
num3 = ((c % 10000) % 1000) / 100;      
num4 = (((c % 10000) % 1000) % 100) / 10;    
num5 = (((c % 10000) % 1000) % 100) % 10;    
              
if ( num1 == num5)          
{ // Abre if           
if ( num2 == num4)          
Palindromo( c);             
else              
System.out.printf("\nEl numero %d no es palindromo. \n", c);       
              
} // Cierra if           
              
else              
System.out.printf("\nEl numero %d no es palindromo. \n", c);       
} // Cierra metodo Recibe          
              
              
//////////////////////////////////////////////////////////////////////              
//METODO PALINDROMO             
/////////////////////////////////////////////////////////////////////              
              
public void Palindromo( int x )         
{ // Abre metodo palindromo          
System.out.printf("\nEl numero %d es un palindromo.\n", x);        
} // Cierra metoto palindromo          
} // Cierra clase Ejercicio4_30          
              


La ejecución del programa es la siguiente:

Por favor introduzca un numero de cinco cifras y le dire si es un palindromo: 
87678

El numero 87678 es un palindromo.

_____________________________________________________________________________________________
Esta entrada es parte de los problemas resueltos del libro Java. Cómo Programar, de Deitel y Deitel.
Entrada Anterior
Entrada Siguiente

3 comentarios:

  1. Saludos viendo el ejercicio mencionado en el libro no pude resolverlo al instante tenia la idea pero creo que no estaba equivocado solo era cuestion de pensarlo mas sin embago me encontre este programa me dio mas formas de pensar y corregir mis errores sin enbargo me costo algo de trabajo entenderlos aún así me agrada que muchas personas se dediquen a resolver estos problemas les dejo micódigo para que le den una chacada solo me falta la parte de que se tiene que iterar hasta que sea introducido un vaalor correcto de 5 cifras.

    public void palindromo(){
    int numero;
    int cifra1 =0, cifra2=0, cifra3=0, cifra4=0, cifra5=0; //Variables que almacenarán las 5 cifras
    int acomulaRes=0;



    System.out.println("Digite un número palindromo de 5 cifras");
    Scanner entrada = new Scanner(System.in);
    numero = entrada.nextInt();

    //Se valida que el número introducido sea un número de 5 cifras si no se indica el error y el procesos no es ejecutado
    if(numero/10000 <= 9 && numero/10000 >=1)
    {
    //divide el número entre la cantidad más grande comenzando a obtener lonúmeros de izquierda a derecha
    cifra1 = numero / 10000;
    //obtenemos en residuo de la operación anterior y lo almacenamos en acomulaRes ejemplo 12345%10000 entóces acomulaRes= 2345
    acomulaRes = numero%10000;
    //ahora dividimos la varable acomulaRes para obtener la siguiente cifra ejemplo: (cifra = 2345/1000) = 2
    //recordando que el resultado de una división de enteros es truncada y solo se toma el valor entero de la división
    cifra2 = acomulaRes/1000;
    //asignamos a acomulaRes un nuevo valor en el residuo siguiente tomando el ejemplo sería: (acomulaRes = 2345%1000) por lo tanto: acomulaRes = 350
    acomulaRes = acomulaRes%1000;
    //obtenemos la siguiente cifra con la división
    cifra3 = acomulaRes/100;
    //el proceso se repite hasta terminar la cantidad total
    acomulaRes = acomulaRes%100;
    cifra4 = acomulaRes/10;
    cifra5 = acomulaRes%10;

    //obtenidos todas las cifras válidamos que el número sea un pelíndromo mediante
    //los dos primeros números y los números centrales de las crifras
    if(cifra1==cifra5 && cifra2==cifra4)
    {
    System.out.println("el número "+numero+" Es un palindromo");
    }
    else
    System.out.println("el número "+numero+" No es un palindromo");



    }
    //Impresión de los letreros de error al introducir números que no sean de cinco cifras
    else
    {
    System.out.println("El número introducido no es un número de 5 cifras");
    System.out.println("Por favor introduzca un número de 5 cifras");
    }

    }

    ResponderEliminar
  2. usando una lógica más simple (aunque usando y "repitiendo" más código) así lo resolví:

    import java.util.Scanner;
    public class Palindromos
    {
    public static void main(String[]args)
    {
    int a=0,b=0,c=0,d=0,e=0,uno=0,dos=0,tres=0,cuatro=0,cinco=0,numero=0,numero2=0,verificar=0;
    Scanner teclado=new Scanner(System.in);

    System.out.println("ingrese un numero de 5 cifras: ");
    numero=teclado.nextInt();

    verificar=numero/10000;

    System.out.println(verificar);

    if(verificar<=9)
    {
    if(verificar>=1)
    {
    numero2=numero;

    a=numero/10000;
    numero=numero%10000;

    b=numero/1000;
    numero=numero%1000;

    c=numero/100;
    numero=numero%100;

    d=numero/10;
    e=numero%10;

    //_________________________

    uno=numero2%10;
    numero2=numero2/10;

    dos=numero2%10;
    numero2=numero2/10;

    tres=numero2%10;
    numero2=numero2/10;

    cuatro=numero2%10;
    numero2=numero2/10;

    cinco=numero2%10;

    //____________________________

    if (a==uno)
    {
    if (b==dos)
    {
    if(c==tres)
    {
    if(d==cuatro)
    {
    if(e==cinco)
    {
    System.out.println("El número es palíndromo");
    }
    }
    }
    }
    }

    else
    {System.out.println("No es Palíndromo");}
    }
    }

    else
    System.out.println("ERROR, el numero no es de 5 cifras");












    }
    }

    ResponderEliminar
  3. Gracias por compartir tus conocimientos, me fue muy útil.

    He aquí comparto otro blog http://cenandoconbytes.blogspot.com.co/2011/08/como-programar-en-java-ejercicio-430.html

    qué me pareció justo compartirlo con uds.
    ---Disciple de la Sagesse---

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...