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
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.
ResponderEliminarpublic 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");
}
}
usando una lógica más simple (aunque usando y "repitiendo" más código) así lo resolví:
ResponderEliminarimport 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");
}
}
Gracias por compartir tus conocimientos, me fue muy útil.
ResponderEliminarHe 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---
Muchas gracias por sus ideas. Comparto una que me ayudó a repasar conceptos:
ResponderEliminarpublic 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");
}
}
}
excelente ejemplo
ResponderEliminar