Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Dado un número positivo (validado), almacenar todos sus divisores en una pila y determinar si el número
- es perfecto haciendo uso de los valores guardados. Para la resolución del ejercicio se deben utilizar las
- versiones básica o genérica de Stack propuestas en teoría.
- Definición: Un número es perfecto cuando la suma de sus divisores excepto el mismo número es igual al
- número en cuestión.
- Modifique el programa escrito de manera que permita optar entre el ingreso de valores por consola o por
- un generador de valores aleatorios.
- Indicaciones :
- Este ejercicio necesita del objeto scanner para ingresar datos por la consola o teclado, se espera que el
- código controle los problemas que normalmente ocurren al operar con la consola o teclado.
- Se espera una correcta modularización entre el código que realiza el ingreso y validación de los datos
- respecto del código que hace lo que se solicita en el ejercicio.
- El ejercicio debe implementar un mecanismo para seleccionar el ingreso de valores por consola o
- generados aleatoriamente.*/
- import java.util.Random;
- import java.util.Scanner;
- public class Principal {
- private static Scanner leer = new Scanner(System.in);
- public static void main(String[] args) {
- Integer resp=respuesta();
- if (resp==1) {
- ingresarValor();
- }
- else {
- valorAleatorio();
- }
- leer.close();
- }
- public static Integer respuesta() {
- Integer resp=0;
- do {
- do{
- try{
- System.out.println("1. Ingresar número positivo.\n2. Generar positivo aleatorio.");
- resp= Integer.parseInt(leer.nextLine());
- break;
- }catch(Exception exception) {
- System.err.println("Caracter inválido, pruebe otra vez.");}
- }while(true);
- } while ((resp!=1) & (resp!=2));
- return resp;
- }
- public static void ingresarValor() {
- Integer numero=0;
- do{
- do{
- try{
- System.out.println("Ingrese un número positivo: ");
- numero = Integer.parseInt(leer.nextLine());
- break;
- }catch(Exception exception) {
- System.err.println("Caracter inválido, purebe otra vez.");}
- }while(true);
- if (validarNum(numero)==false) {
- System.out.println("El número ingresado no es positivo.");
- }
- else {
- divisores(numero);
- }}while (numero<1);
- }
- public static void valorAleatorio() {
- System.out.println("El valor es generado al azar.");
- Random r = new Random();
- divisores(1 + r.nextInt(100));
- }
- public static boolean validarNum(int n) {
- boolean positivo;
- if (n<1) {
- positivo= false;
- }else {
- positivo=true;
- }
- return positivo;
- }
- public static void divisores(int num) {
- Pila pila = new Pila();
- boolean finished=false;
- int divisor=1;
- int suma=0;
- while(!finished) {
- if(num%divisor==0) {
- pila.push(divisor);
- suma =suma+divisor;
- divisor +=1;
- }else {
- divisor +=1;
- }
- if (divisor>num)
- finished=true;
- }
- System.out.println("Los divisores de " + num + " son: ");
- while(!pila.empty()) {
- System.out.println(pila.pop());
- }
- numPerfecto(suma,num);
- }
- public static void numPerfecto(int s,int n) {
- s=s-n;
- if (s==n) {
- System.out.println("Además " + n + " es un número perfecto.");
- }
- else {System.out.println("Además " + n + " no es un número perfecto.");
- }
- }
- }
Add Comment
Please, Sign In to add comment