package capitulo04.utils;

import java.util.Scanner;

public class Utils {
    public static int solicitarIntScanner(String pregunta) {
        System.out.println(pregunta);
        Scanner sc = new Scanner(System.in);
        return sc.nextInt();
    }

    public static String solicitarStringScanner(String pregunta) {
        System.out.println(pregunta);
        Scanner sc = new Scanner(System.in);
        return sc.nextLine();
    }

    public static int solicitarIntScannerInline(String pregunta) {
        System.out.print(pregunta);
        Scanner sc = new Scanner(System.in);
        return sc.nextInt();
    }

    public static String solicitarStringScannerInline(String pregunta) {
        System.out.print(pregunta);
        Scanner sc = new Scanner(System.in);
        return sc.nextLine();
    }


    public static float solicitarFloatScanner(String pregunta) {
        System.out.println(pregunta);
        Scanner sc = new Scanner(System.in);
        return sc.nextFloat();
    }

    public static float solicitarFloatScannerInline(String pregunta) {
        System.out.print(pregunta);
        Scanner sc = new Scanner(System.in);
        return sc.nextFloat();
    }

    public static double generarNumAleatorio(int multiplicador) {
        return Math.random() * multiplicador;
    }

    public static int generarIntAleatorioEntreLimites(int limiteMin, int limiteMax) {
        return limiteMin + ((int) Math.round(Math.random() * (limiteMax - limiteMin)));
    }

    public static void mostrarArrayNums(int array[]) {
        for (int num : array) {
            System.out.print(num + " ");
        }
    }

    public static int[] crearArrayNumsAleatorios(int cantidadElementos, int numMinimo, int numMaximo) {
        int[] nums = new int[cantidadElementos];

        for (int i = 0; i < nums.length; i++) {
            nums[i] = numMinimo + (int) Math.round(generarNumAleatorio((numMaximo - numMinimo)));
        }
        return nums;
    }

    public static int[] crearArrayNumsAleatoriosSinRepeticiones(int cantidadElementos, int numMinimo, int numMaximo) {
        int[] nums = new int[cantidadElementos];

        for (int i = 0; i < nums.length; i++) {
            int nuevoNum;
            boolean repetido;
            do {
                nuevoNum = numMinimo + (int) Math.round(generarNumAleatorio((numMaximo - numMinimo)));
                repetido = false;
                for (int j = 0; j < i; j++) {
                    if (nums[j] == nuevoNum) {
                        repetido = true;
                        break;
                    }
                }
            } while (repetido);
            nums[i] = nuevoNum;
        }
        return nums;
    }

    public static String cambiarAMinuscula(String textoACambiar) {
        String minuscula = "";
        for (int i = 0; i < textoACambiar.length(); i++) {
            if (textoACambiar.charAt(i) >= 65 && textoACambiar.charAt(i) <= 90) {
                minuscula += (char) (textoACambiar.charAt(i) + 32);
            } else {
                minuscula += textoACambiar.charAt(i);
            }
        }
        return minuscula;
    }
}
