diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 835f4e5..7da6d15 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,7 +4,14 @@
-
+
+
+
+
+
+
+
+
@@ -20,9 +27,9 @@
-
+ {
+ "associatedIndex": 1
+}
@@ -31,21 +38,23 @@
- {
+ "keyToString": {
+ "Application.Ejercicio_a.executor": "Run",
+ "Application.Ejercicio_b.executor": "Run",
+ "Application.Ejercicio_c.executor": "Run",
+ "Application.Ejercicio_d.executor": "Run",
+ "Application.Ejercicio_e.executor": "Run",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "RunOnceActivity.git.unshallow": "true",
+ "git-widget-placeholder": "main",
+ "kotlin-language-version-configured": "true",
+ "onboarding.tips.debug.path": "/Users/h4ckx0r/IdeaProjects/ExamenesProgramacion/src/main/java/net/h4ckx0r/Main.java"
}
-}]]>
+}
+
@@ -130,9 +139,28 @@
1729857821078
-
+
+
+ 1729857949405
+
+
+
+ 1729857949405
+
+
+
+
+
@@ -143,6 +171,7 @@
-
+
+
\ No newline at end of file
diff --git a/src/main/java/examenes/examen20241122/Ejercicio_a.java b/src/main/java/examenes/examen20241122/Ejercicio_a.java
new file mode 100644
index 0000000..c22fbf7
--- /dev/null
+++ b/src/main/java/examenes/examen20241122/Ejercicio_a.java
@@ -0,0 +1,31 @@
+package examenes.examen20241122;
+
+import examenes.examen20241122.Utils.Utils;
+
+public class Ejercicio_a {
+ public static void main(String[] args) {
+ int[] arrayNums = Utils.crearArrayNumsAleatorios(10, -100, 100);
+
+ Utils.mostrarArrayNums(arrayNums);
+ System.out.println();
+ Utils.mostrarArrayNums(invertirArrayNums(arrayNums));
+ }
+
+ /**
+ * Invierte los números del array intercambiándolos
+ *
+ * @param arrayNums Array a invertir
+ * @return Mismo array invertido
+ */
+ public static int[] invertirArrayNums(int[] arrayNums) {
+
+ //Lo recorre desde el principio y el final invirtiéndolos
+ for (int inicio = 0, fin = arrayNums.length - 1; inicio < fin; inicio++, fin--) {
+
+ int tempNum = arrayNums[inicio];
+ arrayNums[inicio] = arrayNums[fin];
+ arrayNums[fin] = tempNum;
+ }
+ return arrayNums;
+ }
+}
diff --git a/src/main/java/examenes/examen20241122/Ejercicio_b.java b/src/main/java/examenes/examen20241122/Ejercicio_b.java
new file mode 100644
index 0000000..4012e57
--- /dev/null
+++ b/src/main/java/examenes/examen20241122/Ejercicio_b.java
@@ -0,0 +1,49 @@
+package examenes.examen20241122;
+
+import examenes.examen20241122.Utils.Utils;
+
+public class Ejercicio_b {
+ public static void main(String[] args) {
+ //Declaramos el array de palabras
+ String[] palabras = new String[]{"Rafa", "que", "tal", "te", "parece", "mi", "proyecto", "del", "asistente"};
+
+ //Lo mostramos convertido
+ Utils.mostrarMatrizChars(stringsAMatriz(palabras));
+ }
+
+ /**
+ * Genera una matriz de caracteres a partir de un array de Palabras
+ *
+ * @param palabras Array de palabras
+ * @return Matriz de chars
+ */
+ public static char[][] stringsAMatriz(String[] palabras) {
+ char[][] arrayChars = new char[palabras.length][obtenerCharPalabraMasLarga(palabras)];
+
+ for (int i = 0; i < arrayChars.length; i++) {
+ for (int j = 0; j < arrayChars[i].length; j++) {
+ if (j >= palabras[i].length()) {
+ arrayChars[i][j] = ' ';
+ } else {
+ arrayChars[i][j] = palabras[i].charAt(j);
+ }
+ }
+ }
+ return arrayChars;
+ }
+
+ /**
+ * Obtiene el número de carácteres de la palabra más larga de una array
+ *
+ * @param palabras Array de palabras
+ * @return Número de carácteres
+ */
+ public static int obtenerCharPalabraMasLarga(String[] palabras) {
+ int numChars = 0;
+
+ for (String palabra : palabras) {
+ if (palabra.length() > numChars) numChars = palabra.length();
+ }
+ return numChars;
+ }
+}
diff --git a/src/main/java/examenes/examen20241122/Ejercicio_c.java b/src/main/java/examenes/examen20241122/Ejercicio_c.java
new file mode 100644
index 0000000..153c780
--- /dev/null
+++ b/src/main/java/examenes/examen20241122/Ejercicio_c.java
@@ -0,0 +1,51 @@
+package examenes.examen20241122;
+
+import examenes.examen20241122.Utils.Utils;
+
+public class Ejercicio_c {
+ public static void main(String[] args) {
+ int[] arrayNums = Utils.crearArrayNumsAleatorios(10, 0, 10);
+
+ //System.out.println(calcularNumDivisores(4));
+ Utils.mostrarArrayNums(arrayNums);
+ System.out.println();
+ Utils.mostrarArrayNums(ordenarBurbujaDivisores(arrayNums));
+ }
+
+
+ /**
+ * Ordena por Burbuja según el número de divisores
+ *
+ * @param array Array que ordenar
+ * @return Array ordenado
+ */
+ public static int[] ordenarBurbujaDivisores(int[] array) {
+ boolean ordenando;
+ do {
+ ordenando = false;
+ for (int i = 0; i < array.length; i++) {
+ if (i != (array.length - 1) && calcularNumDivisores(array[i]) > calcularNumDivisores(array[i + 1])) {
+ int tempNum = array[i];
+ array[i] = array[i + 1];
+ array[i + 1] = tempNum;
+ ordenando = true;
+ }
+ }
+ } while (ordenando);
+ return array;
+ }
+
+ /**
+ * Calcula el número de divisores que tiene un número
+ *
+ * @param num Número del que calcular los divisores
+ * @return Número de divisores
+ */
+ public static int calcularNumDivisores(int num) {
+ int divisores = 0;
+ for (int i = 1; i <= num; i++) {
+ if ((num % i) == 0) divisores++;
+ }
+ return divisores;
+ }
+}
diff --git a/src/main/java/examenes/examen20241122/Ejercicio_d.java b/src/main/java/examenes/examen20241122/Ejercicio_d.java
new file mode 100644
index 0000000..0ed1342
--- /dev/null
+++ b/src/main/java/examenes/examen20241122/Ejercicio_d.java
@@ -0,0 +1,39 @@
+package examenes.examen20241122;
+
+public class Ejercicio_d {
+ public static void main(String[] args) {
+ //Declaramos el texto
+ String texto = "estoEsUnEjemplo";
+
+ //Mostramos los cambios antes
+ System.out.println(texto);
+ //Y después
+ System.out.println(cambiarASnake(texto));
+
+
+ }
+
+ /**
+ * Cambiamos de camelCase a snake_case
+ *
+ * @param texto Texto en camelCase
+ * @return Texto en snake_case
+ */
+ public static String cambiarASnake(String texto) {
+ //Creamos un StringBuffer o StringBuilder
+ StringBuffer textoSnake = new StringBuffer();
+
+ //Por cada letra comprobamos si está en mayúscula y si lo está lo cambiamos por _ y la letra en minúscula
+ for (int i = 0; i < texto.length(); i++) {
+ if (texto.charAt(i) >= 65 && texto.charAt(i) <= 90) {
+ textoSnake.append("_");
+ textoSnake.append((char) (texto.charAt(i) + 32));
+ } else {
+ textoSnake.append(texto.charAt(i));
+ }
+ }
+
+ //Devolvemos el String
+ return textoSnake.toString();
+ }
+}
diff --git a/src/main/java/examenes/examen20241122/Utils/Utils.java b/src/main/java/examenes/examen20241122/Utils/Utils.java
new file mode 100644
index 0000000..97b5e05
--- /dev/null
+++ b/src/main/java/examenes/examen20241122/Utils/Utils.java
@@ -0,0 +1,55 @@
+package examenes.examen20241122.Utils;
+
+public class Utils {
+ /**
+ * Recorremos una matriz para mostrarla por consola
+ *
+ * @param matriz Matriz a recorrer
+ */
+ public static void mostrarMatrizChars(char[][] matriz) {
+ for (int i = 0; i < matriz.length; i++) {
+ for (int j = 0; j < matriz[i].length; j++) {
+ System.out.print(matriz[i][j] + " ");
+ }
+ System.out.println();
+ }
+ }
+
+ /**
+ * Genera un número aleatorio entre 0 y un máximo
+ *
+ * @param multiplicador Máximo
+ * @return Double con el número
+ */
+ public static double generarNumAleatorio(int multiplicador) {
+ return Math.random() * multiplicador;
+ }
+
+ /**
+ * Crear un array de números aleatorios
+ *
+ * @param cantidadElementos Tamaño del arrau
+ * @param numMinimo Número mínimo que puede ser un elemento del array
+ * @param numMaximo Número máximo que puede ser un elemento del array
+ * @return Array con los números aleatorios
+ */
+ 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;
+ }
+
+ /**
+ * Recorre un array de números para mostrarlo por consola
+ *
+ * @param array Array a mostrar
+ */
+ public static void mostrarArrayNums(int[] array) {
+ for (int num : array) {
+ System.out.print(num + " ");
+ }
+ }
+}