package com.jlm.ccb.ejercicios.capitulo4; import java.util.Scanner; /** * Clase encargada de cifrar los datos telefónicos. * Ejercicio 4.37 * @author LorettoTG * @version 1.0 */ public class LineaCifrada { /** * Método encargado de cifrar la línea telefónica. */ public void cifrar() { //Se crea un objeto Scanner para obtener la entrada //de datos del usuario. Scanner entrada = new Scanner(System.in); System.out.println("Deme el numero a cifrar: "); int numero = entrada.nextInt(); //Tomamos el primer dígito y luego quitamos el primer dígito int primerDigito = numero / 1000; numero = numero % 1000; int segundoDigito = numero / 100; numero = numero % 100; int tercerDigito = numero / 10; numero = numero % 10; int cuartoDigito = numero; primerDigito = encriptar(primerDigito)*10; segundoDigito = encriptar(segundoDigito); tercerDigito = encriptar(tercerDigito)*1000; cuartoDigito = encriptar(cuartoDigito)*100; int numeroEncriptado = primerDigito + segundoDigito + tercerDigito + cuartoDigito; System.out.println("Nuevo numero: " + numeroEncriptado); } /** * Método encargado de encriptar con el siguiente algoritmo. * Sumar 7 al dígito y obtener el residuo después de dividir * el nuevo valor entre 10; * @param digito int Con el valor de un dígito. * @return resultado int Con el valor del dígito encriptado. */ public int encriptar(int digito) { return (digito + 7)%10; } /** * Método encargado de desencriptar con el siguiente algoritmo. * Si el numero es 7,8,9 sumar 10. Si no es mayor a 9 dejarlo * igual, luego restar 7. * el nuevo valor entre 10; * @param digito int Con el valor de un dígito. * @return resultado int Con el valor del dígito encriptado. */ public int desencriptar(int digito) { if (digito == 7 || digito == 8 || digito == 9) { return digito - 7; } else { return digito + 3; } } /** * Método encargado de descrifar un número. */ public void descifrar() { //Se crea un objeto Scanner para obtener la entrada //de datos del usuario. Scanner entrada = new Scanner(System.in); System.out.println("Deme el numero a cifrar: "); int numero = entrada.nextInt(); //Tomamos el primer dígito y luego quitamos el primer dígito int primerDigito = numero / 1000; numero = numero % 1000; int segundoDigito = numero / 100; numero = numero % 100; int tercerDigito = numero / 10; numero = numero % 10; int cuartoDigito = numero; primerDigito = desencriptar(primerDigito)*10; segundoDigito = desencriptar(segundoDigito); tercerDigito = desencriptar(tercerDigito)*1000; cuartoDigito = desencriptar(cuartoDigito)*100; int numeroEncriptado = primerDigito + segundoDigito + tercerDigito + cuartoDigito; System.out.println("Nuevo numero: " + numeroEncriptado); } /** * Punto de entrada a la clase y a la aplicación. * @param args matriz de argumentos de cadena. */ public static void main(String[] args) { //El operador new es el encargado de crear instancias de //una clase, es decir los objetos que tienen las características //de la clase. El operador new de Java es capaz de reservar la //memoria para un objeto de este tipo sabiendo los atributos que //tiene según la definición de la clase. LineaCifrada lineaCifrada = new LineaCifrada(); lineaCifrada.cifrar(); lineaCifrada.descifrar(); } }
Un blog dedicado a los bytes, al lenguaje java y diferentes frameworks que se emplearan poco a poco.
viernes, 9 de septiembre de 2011
Como Programar en Java: Ejercicio 4.37
Aquí esta el ejercicio 4.37 de Como Programar en Java séptima edición.
Suscribirse a:
Enviar comentarios (Atom)
Excelente ayuda muchas gracias
ResponderEliminary cuando se intrducen valores como 0011
ResponderEliminar