Advertisement
andresnogales

Main4.java

Oct 13th, 2021 (edited)
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.87 KB | None | 0 0
  1. import java.util.LinkedList;
  2. import java.util.Queue;
  3.  
  4. public class Main4 {
  5.    
  6.     public static void main(String[] args) {               
  7.         Queue<Integer> queue1 = new LinkedList<Integer>();
  8.         Queue<Integer> queue2 = new LinkedList<Integer>();
  9.        
  10.         String[] options = {
  11.                 "Ingresar número en cola 1",
  12.                 "Ingresar número en cola 2",
  13.                 "Eliminar primero en la cola 1",
  14.                 "Eliminar primero en la cola 2",
  15.                 "Generar números aleatorios",
  16.                 "Mostrar elementos guardados",
  17.                 "Comparar colas"
  18.                 };
  19.        
  20.         Menu menu = new Menu(options);
  21.         Integer inputNumber;
  22.         Integer option = 0;
  23.        
  24.         do {
  25.             option = menu.getOption();
  26.            
  27.             switch(option) {
  28.            
  29.             //Ingreso de un número por teclado implementado la clase Helper
  30.             //Se guardará en la cola 1
  31.             case 1:
  32.                 inputNumber = Helper.getInt("Ingrese un número para la cola 1: ");
  33.                 queue1.add(inputNumber);
  34.                 System.out.println("Número almacenado");                  
  35.                 Helper.pressEnterKeyToContinue();
  36.                 break;
  37.            
  38.             //Ingreso de un número por teclado implementado la clase Helper
  39.             //Se guardará en la cola 1
  40.             case 2:
  41.                 inputNumber = Helper.getInt("Ingrese un número: ");
  42.                 queue2.add(inputNumber);
  43.                 System.out.println("Número almacenado");                      
  44.                 Helper.pressEnterKeyToContinue();
  45.                 break;
  46.            
  47.             //Elimina el número que está primero en la cola    1
  48.             case 3:
  49.                 if(!queue1.isEmpty()) {
  50.                     Integer numberDequeue = queue1.poll();
  51.                     System.out.println("Número que salió: " + numberDequeue);
  52.                 }else System.out.println("La cola 1 está vacía");
  53.                                        
  54.                 Helper.pressEnterKeyToContinue();
  55.                 break;
  56.            
  57.             //Elimina el número que está primero en la cola    2
  58.             case 4:
  59.                 if(!queue2.isEmpty()) {
  60.                     Integer numberDequeue = queue2.poll();
  61.                     System.out.println("Número que salió: " + numberDequeue);
  62.                 }else System.out.println("La cola 2 está vacía");                    
  63.                 Helper.pressEnterKeyToContinue();
  64.                 break;
  65.            
  66.             //Generación de números aleatorios para las dos colas implementado la clase Helper
  67.             case 5:
  68.                 queue1 = new LinkedList<Integer>();
  69.                 queue2 = new LinkedList<Integer>();
  70.                 //Número aleatorio de la cantidad de elementos a generar
  71.                 Integer maxSize = Helper.randomInt(5, 10);
  72.                 for(int i = 0; i < maxSize; i++) {
  73.                     queue1.add(Helper.randomInt(1, 500));
  74.                     queue2.add(Helper.randomInt(1, 500));
  75.                 }
  76.                 System.out.println("Números generados");
  77.                 printQueue(queue1, "Cola 1");
  78.                 printQueue(queue2, "Cola 2");
  79.                 Helper.pressEnterKeyToContinue();
  80.                 break;
  81.            
  82.             //Muestra por pantalla los números encolados
  83.             case 6:
  84.                 printQueue(queue1, "Cola 1");
  85.                 printQueue(queue2, "Cola 2");
  86.                 Helper.pressEnterKeyToContinue();
  87.                 break;
  88.            
  89.                 //Llamada al método que resuelve lo que solicita el ejercicio
  90.             case 7:
  91.                 try {
  92.                     Integer result = comparation(queue1, queue2);
  93.                     if(result > 0) System.out.println("La cola 1 es mayor");
  94.                     if(result < 0) System.out.println("La cola 2 es mayor");
  95.                     if(result == 0) System.out.println("Son iguales cola 1 y cola 2");
  96.                     System.out.println("Resultado: " + result);
  97.                 }catch(RuntimeException e) {
  98.                     System.err.println("No se pudo realizar la acción " + e);
  99.                 }  
  100.                 Helper.pressEnterKeyToContinue();
  101.                 break;
  102.             }          
  103.         }while(option !=0);
  104.        
  105.         System.out.println("Fin del programa");
  106.     }
  107.    
  108.     /**
  109.      * Returna la comparación elemento a elemento de los valores
  110.      * del frente de dos colas de números enteros, la comparación se realiza
  111.      * restando dichos números. Ambas colas no deben estar vacías
  112.      * @param q1:   Una primer cola de números enteros
  113.      * @param q2:   Una segunda cola de números enteros a comparar con la primera
  114.      * @return un número entero mayor a cero si la primera cola es mayor, menor a cero
  115.      * si la segunda es mayor, o cero si son iguales
  116.      */
  117.    
  118.     public static Integer comparation(Queue<Integer> q1, Queue<Integer> q2) {
  119.         int result = 0;
  120.        
  121.         //Se realiza una copia de las colas para no modificar las originales
  122.         //porque en el peor de las cosas se desencolaran todos sus elementos
  123.         Queue<Integer> queue1 = new LinkedList<Integer>(q1);
  124.         Queue<Integer> queue2 = new LinkedList<Integer>(q2);
  125.        
  126.         if(queue1.isEmpty()) throw new RuntimeException("Error: La cola 1 está vacía");
  127.  
  128.         if(queue2.isEmpty()) throw new RuntimeException("Error: La cola 2 está vacía");
  129.        
  130.         //Se obtiene la longuitud máxima de una cola
  131.         //Si tienen diferentes tamaños, será el valor de la mayor cantidad de elementos
  132.         int maxSize = queue1.size() > queue2.size()? queue1.size(): queue2.size();
  133.        
  134.         for (int i = 0; i < maxSize; i++) {
  135.            
  136.             //Si al desencolar ya no quedan elementos en una cola
  137.             //Entonces se considerará que la mayor cola es la otra
  138.             if(queue1.peek() == null) return queue2.peek();
  139.             if(queue2.peek() == null) return queue1.peek();
  140.            
  141.             //La comparacion se realiza comparando uno a uno los elementos
  142.             //del frente de cada cola
  143.             result = queue1.peek() - queue2.peek();    
  144.            
  145.             if(result > 0) break; //La primer cola es mayor    
  146.             if(result < 0) break; //La segunda cola es mayor
  147.            
  148.             //Si la diferencia es cero, entonces aún no se salió del ciclo
  149.             //Se elimina el primer elemento de ambas colas para la comparación siguiente
  150.             queue1.poll();
  151.             queue2.poll();
  152.         }      
  153.         return result;
  154.     }
  155.    
  156.     /**
  157.      * Muestra por pantalla los elementos de una cola de números enteros
  158.      * en el orden en que se ingresaron. Si no posee elementos se indicará
  159.      * que está vacia.
  160.      * @param queue: cola de números enteros a mostrar
  161.      * @param queueName: string con el nombre de la cola
  162.      */
  163.    
  164.     public static void printQueue(Queue<Integer> queue, String queueName) {
  165.         if(queue.isEmpty()) {
  166.             System.out.println(queueName + ": vacía");
  167.         }
  168.         else {         
  169.             System.out.print(queueName + ": ");
  170.             for (Integer element : queue) {
  171.                 System.out.print(element + " ");
  172.             }
  173.             System.out.println("");
  174.         }
  175.     }
  176. }
  177.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement