Retos¶
Empaquetar retos
Empaqueta las actividades, dentro de la carpeta ut04, en la carpeta retos.
Las actividades programadas en esta sección Retos no son obligatorias.
Reto 01 Lluvias¶
Se dispone de un fichero de un array lluviasEnero que contiene 31 datos correspondientes a las lluvias caídas en el mes de enero del pasado año. Se desea analizar los datos del fichero para averiguar:
- La lluvia total caída en el mes.
- La cantidad media de lluvias del mes.
- La cantidad más grande de lluvia caída en un solo día.
- Cual fue el día que más llovió.
- La cantidad más pequeña de lluvia caída en un solo día.
- Cual fue el día que menos llovió.
- En cuantos días no llovió nada.
- En cuantos días la lluvia superó la media.
- Si en la primera quincena del mes llovió más o menos que en la segunda.
- En cuantos días la lluvia fue menor que la del día siguiente.
Para resolver el problema se desarrollarán los siguientes métodos:
public static double suma(double v[]), que devuelve la suma de los elementos del arrayv.public static double media(double v[]), que devuelve la media de los elementos del arrayv. Se puede hacer uso del método del apartado anterior.public static int contarMayorQueMedia(double v[]), que devuelve la cantidad de elementos del arrayvque son mayores que la media. Se puede hacer uso del método del apartado anterior.public static double maximo(double v[]), que devuelve el valor más grande almacenado en el arrayv.public static double minimo(double v[]), que devuelve el valor más pequeño almacenado en el arrayv.public static int posMaximo(double v[]), que devuelve la posición del elemento más grande dev. Si éste se repite en el array es suficiente devolver la posición en que aparece por primera vez.public static int posMinimo(double v[]), que devuelve la posición del elemento más pequeño dev. Si éste se repite en el array es suficiente devolver la posición en que aparece por primera vez.public static int contarApariciones(double v[], double x), que devuelve el número de veces que el valor x aparece en el arrayv.public static double sumaParcial(double v[], int izq, int der), que devuelve la suma de los elementos del arrayvque están entre las posiciones izq y der.public static int menoresQueElSiguiente(double v[]), que devuelve el número de elementos devque son menores que el elemento que tienen a continuación.
Puedes utilizar el siguiente array
lluviasEnero:
Reto 02 SumasParciales¶
Se quiere diseñar un método public static int[] sumaParcial(int[] v), que dado un array de enteros v, devuelva otro array de enteros t de forma que t[i] = v[0] + v[1] + ...+ v[i].
Es decir:
Desde el método main crearemos e inicializaremos un array, llamaremos a sumaParcial y mostraremos el array resultante.
Reto 03 HayPares¶
Para determinar si existe algún valor par en un array se proponen varias soluciones. Indica cual/cuales son válidas para resolver el problema.
Puedes utilizar el siguiente array
numeros:
Reto 04 Subsecuencia¶
Escribir un método que, dado un array, determine la posición de la primera subsecuencia del array que comprenda al menos tres números enteros consecutivos en posiciones consecutivas del array. De no existir dicha secuencia devolverá -1.
Por ejemplo: en el array {23, 8, 12, 6, 7, 9, 10, 11, 2} hay 3 números consecutivos en tres posiciones consecutivas, a partir de la posición 5: {9,10,11}
Reto 05 Capicua¶
Escribir un método para determinar si un array de palabras (String) es capicúa, esto es, si la primera y última palabra del array son la misma, la segunda y la penúltima palabras también lo son, y así sucesivamente. Escribir el método main para probar el método anterior.
Reto 06 Utiles¶
Dada una matríz con el mismo número de filas y de columnas, diseñar los siguientes métodos:
-
public static void mostrarDiagonal(int m[][])que muestre por pantalla los elementos de la diagonal principal. -
public static int filaDelMayor (int m[][]), que devuelva la fila en que se encuentra el mayor elemento de la matriz. -
public static void intercambiarFilas(int m[][], int f1, int f2), que intercambie los elementos de las filas indicadas. -
Escribir un método
public static boolean esSimetrica (int m[][])que devuelva true si la matriz m es simétrica. Una matriz es simétrica si tiene el mismo número de filas que de columnas y ademásm[i][j] = m[j][i]para todo par de índicesi,j.
Por ejemplo, es simétrica:
Reto 07 Tetris¶
Supongamos que estamos desarrollando un Tetris en Java y para representar la partida utilizamos una matriz bidimensional de enteros 15 filas por 8 columnas. Se utiliza el valor 0 para indicar que la celda está vacía y un valor distinto de cero para las celdas que contienen parte de una pieza (distintos valores para distintos colores):
Escribir un método que reciba la matriz y elimine las filas completas, haciendo caer las piezas que hay por encima de las celdas eliminadas tal y como se hace en el juego.
Puede ser útil para ver resultados crear un método
public static void imprimePartida(int partida[][])que imprima el estado actual de la matrizpartida.