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

4 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
  4. Muchas gracias por sus ideas. Comparto una que me ayudó a repasar conceptos:

    public class TestPalindromos4_30
    {
    public static void main(String[] args)
    {
    Scanner entrada = new Scanner(System.in); // utilizo un objeto escaner para obtener datos del usuario

    int numero = 0;; // esta variable almacena el numero ingresado
    int auxiliar = 0; // esta variable almacena el numero ingresado y modifica su valor para calcular la cantidad de digitos
    int cifras = 0; //esta variable es el contador de cifras
    int digitos = 0; // esta variable almacena la cantidad de digitos del numero

    while (digitos != 5) // este algoritmo cicla hasta que la cantidad de digitos sea 5
    {
    System.out.println("Ingrese un numero de 5 digitos (no es valido un numero de mas o menos digitos): "); // pide ingreso de usuario
    numero = entrada.nextInt(); // ingreso el numero (cuando excedo el numero de 10 digitos, lanza un error)
    auxiliar = numero; // comparto el numero con la variable "auxiliar"

    // algoritmo para saber la cantidad de digitos
    while (auxiliar != 0) // mientras a "auxliar" le queden cifras
    {
    auxiliar = auxiliar / 10; // le quitamos el último dígito
    cifras++; //sumamos 1 al contador de cifras
    digitos = cifras; // comparto el numero de digitos con la variable "digito" para evaluar la condicion inicial de while
    }

    cifras = 0; // reinicio la variable cifras por si no se ha ingresado un numero de 5 digitos, y debe ejecutarse el segundo while
    }

    if (digitos == 5) // si el numero tiene 5 digitos
    { //Divisiones sin tener en cuenta los decimales, sino tomando los enteros del cociente

    int digito1 = numero / 10000;
    int digito2 = (numero % 10000) / 1000;
    int digito3 = (numero % 1000) / 100;
    int digito4 = (numero % 100) / 10;
    int digito5 = (numero % 10) / 1;

    if (digito1 == digito5 && digito2 == digito4)
    System.out.println("El numero " + numero + " es un numero Palindromo");
    else
    System.out.println("El numero " + numero + " no es un numero Palindromo");
    }
    }
    }

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...