Examen 2024/11/21

This commit is contained in:
2024-11-22 13:15:40 +01:00
parent fe7325620e
commit bf699a0cce
6 changed files with 272 additions and 18 deletions

65
.idea/workspace.xml generated
View File

@@ -4,7 +4,14 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="e2c4f742-461e-4c7a-a6e0-b5f4b8e8f229" name="Changes" comment="utils y resto" />
<list default="true" id="e2c4f742-461e-4c7a-a6e0-b5f4b8e8f229" name="Changes" comment="Se formatea utils">
<change afterPath="$PROJECT_DIR$/src/main/java/examenes/examen20241122/Ejercicio_a.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/examenes/examen20241122/Ejercicio_b.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/examenes/examen20241122/Ejercicio_c.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/examenes/examen20241122/Ejercicio_d.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/examenes/examen20241122/Utils/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -20,9 +27,9 @@
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectColorInfo"><![CDATA[{
"associatedIndex": 1
}]]></component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 1
}</component>
<component name="ProjectId" id="2nvRIu3ZfVBKxiIKkbDGfwPAbgr" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
<ConfirmationsSetting value="2" id="Add" />
@@ -31,21 +38,23 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"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",
"git-widget-placeholder": "main",
"kotlin-language-version-configured": "true",
"onboarding.tips.debug.path": "/Users/h4ckx0r/IdeaProjects/ExamenesProgramacion/src/main/java/net/h4ckx0r/Main.java"
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;Application.Ejercicio_a.executor&quot;: &quot;Run&quot;,
&quot;Application.Ejercicio_b.executor&quot;: &quot;Run&quot;,
&quot;Application.Ejercicio_c.executor&quot;: &quot;Run&quot;,
&quot;Application.Ejercicio_d.executor&quot;: &quot;Run&quot;,
&quot;Application.Ejercicio_e.executor&quot;: &quot;Run&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;main&quot;,
&quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
&quot;onboarding.tips.debug.path&quot;: &quot;/Users/h4ckx0r/IdeaProjects/ExamenesProgramacion/src/main/java/net/h4ckx0r/Main.java&quot;
}
}]]></component>
}</component>
<component name="RecentsManager">
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="examenes.examen20241122" />
<recent name="examenes.examen20241025" />
</key>
</component>
@@ -130,9 +139,28 @@
<option name="project" value="LOCAL" />
<updated>1729857821078</updated>
</task>
<option name="localTasksCounter" value="10" />
<task id="LOCAL-00010" summary="Se formatea utils">
<option name="closed" value="true" />
<created>1729857949405</created>
<option name="number" value="00010" />
<option name="presentableId" value="LOCAL-00010" />
<option name="project" value="LOCAL" />
<updated>1729857949405</updated>
</task>
<option name="localTasksCounter" value="11" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="Commit inicial" />
<MESSAGE value="Ejercicio C terminado" />
@@ -143,6 +171,7 @@
<MESSAGE value="Ejercicio E terminado" />
<MESSAGE value="Ejercicio A terminado" />
<MESSAGE value="utils y resto" />
<option name="LAST_COMMIT_MESSAGE" value="utils y resto" />
<MESSAGE value="Se formatea utils" />
<option name="LAST_COMMIT_MESSAGE" value="Se formatea utils" />
</component>
</project>

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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();
}
}

View File

@@ -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 + " ");
}
}
}