RafaelFascio

TP2 Ejercicio 3

Oct 2nd, 2020 (edited)
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*Dado un número positivo (validado), almacenar todos sus divisores en una pila y determinar si el número
  2. es perfecto haciendo uso de los valores guardados. Para la resolución del ejercicio se deben utilizar las
  3. versiones básica o genérica de Stack propuestas en teoría.
  4.  
  5. Definición: Un número es perfecto cuando la suma de sus divisores excepto el mismo número es igual al
  6. número en cuestión.
  7.  
  8. Modifique el programa escrito de manera que permita optar entre el ingreso de valores por consola o por
  9. un generador de valores aleatorios.
  10.  
  11. Indicaciones :
  12. Este ejercicio necesita del objeto scanner para ingresar datos por la consola o teclado, se espera que el
  13. código controle los problemas que normalmente ocurren al operar con la consola o teclado.
  14. Se espera una correcta modularización entre el código que realiza el ingreso y validación de los datos
  15. respecto del código que hace lo que se solicita en el ejercicio.
  16. El ejercicio debe implementar un mecanismo para seleccionar el ingreso de valores por consola o
  17. generados aleatoriamente.*/
  18.  
  19.  
  20. import java.util.Random;
  21. import java.util.Scanner;
  22.  
  23. public class Principal {
  24.  
  25.     private static Scanner leer = new Scanner(System.in);
  26.  
  27.     public static void main(String[] args) {
  28.         Integer resp=respuesta();
  29.  
  30.         if (resp==1) {
  31.             ingresarValor();
  32.         }
  33.         else {
  34.             valorAleatorio();
  35.         }
  36.             leer.close();
  37.     }
  38.    
  39.     public static Integer respuesta() {
  40.         Integer resp=0;
  41.         do {
  42.             do{
  43.                 try{
  44.                     System.out.println("1. Ingresar número positivo.\n2. Generar positivo aleatorio.");
  45.                 resp= Integer.parseInt(leer.nextLine());
  46.                
  47.                 break;
  48.                 }catch(Exception exception) {
  49.                     System.err.println("Caracter inválido, pruebe otra vez.");}
  50.                 }while(true);
  51.             } while ((resp!=1) & (resp!=2));
  52.         return resp;
  53.     }
  54.    
  55.     public static void ingresarValor() {
  56.         Integer numero=0;
  57.         do{
  58.             do{
  59.                 try{
  60.                     System.out.println("Ingrese un número positivo: ");
  61.            
  62.         numero = Integer.parseInt(leer.nextLine());
  63.         break;
  64.                 }catch(Exception exception) {
  65.                     System.err.println("Caracter inválido, purebe otra vez.");}
  66.                 }while(true);
  67.        
  68.         if  (validarNum(numero)==false) {
  69.             System.out.println("El número ingresado no es positivo.");
  70.             }
  71.         else {
  72.             divisores(numero); 
  73.     }}while (numero<1);
  74.     }
  75.    
  76.     public static void valorAleatorio() {
  77.         System.out.println("El valor es generado al azar.");
  78.         Random r = new Random();
  79.         divisores(1 + r.nextInt(100));
  80.         }
  81.    
  82.     public static boolean validarNum(int n) {
  83.         boolean positivo;
  84.         if (n<1) {
  85.             positivo= false;
  86.         }else {
  87.         positivo=true;
  88.         }
  89.         return positivo;
  90.     }
  91.    
  92.     public static void divisores(int num) {
  93.         Pila pila = new Pila();
  94.         boolean finished=false;
  95.         int divisor=1;
  96.         int suma=0;
  97.         while(!finished) {
  98.             if(num%divisor==0) {
  99.                 pila.push(divisor);
  100.                 suma =suma+divisor;
  101.                 divisor +=1;
  102.             }else {
  103.                 divisor +=1;
  104.             }
  105.             if (divisor>num)
  106.                 finished=true;
  107.         }
  108.         System.out.println("Los divisores de " + num + " son: ");
  109.         while(!pila.empty()) {
  110.             System.out.println(pila.pop());
  111.         }
  112.         numPerfecto(suma,num);
  113.     }  
  114.    
  115.     public static void numPerfecto(int s,int n) {
  116.         s=s-n;
  117.         if (s==n) {
  118.             System.out.println("Además " + n + " es un número perfecto.");
  119.         }
  120.         else {System.out.println("Además " + n + " no es un número perfecto.");
  121.         }
  122.     }
  123.  
  124. }
Add Comment
Please, Sign In to add comment