public class EjercicioM0_09_resuelto { public static void main(String[] args) { double [] año1 = { 1.8, -7.6, -6.2, -3.9, -7.0, -4.5, -4.9, -4.2, -1.4, -1.5, -5.6, -3.9, -5.6, -6.0, -7.4, -8.2, -4.4, 2.3, -8.8, -13.4, 0.1, 0.3, 3.4, -11.9, -5.4, -5.4, -2.1, -5.3, -7.0, -8.2, -18.2, // Ene 0.9, -7.8, -0.4, -3.7, -1.1, -0.2, -3.3, -5.6, -8.3, -6.7, -1.3, -6.3, -2.7, -0.2, -10.2, 3.7, -7.2, -5.9, -8.9, -2.3, 0.8, -5.7, 2.5, -1.8, 1.0, -1.8, -5.8, -6.7, // Feb 2.3, -4.1, -2.1, -12.3, -3.2, -2.4, 1.4, 4.4, 1.3, -4.5, -2.0, 7.2, -1.2, -6.9, -0.3, -7.2, -6.1, -2.2, -0.3, -3.9, 7.0, 4.7, 1.0, 4.8, -4.9, 3.4, -1.0, 4.6, 3.3, 2.9, 6.6, // Mar 12.8, 8.9, 8.1, 8.9, 9.2, 10.3, 7.3, 8.3, 9.1, 7.4, 6.6, 9.1, 7.5, 8.2, 5.1, 6.1, 6.6, 6.2, 1.9, 10.7, 16.0, 12.6, 6.2, 8.0, 3.5, 13.2, 3.5, 3.5, 6.6, 6.0, // Abr 15.9, 9.1, 23.5, 17.5, 17.6, 12.2, 19.5, 13.7, 20.6, 11.1, 14.8, 21.5, 24.4, 10.3, 14.9, 19.6, 14.3, 17.9, 15.7, 19.9, 16.2, 13.8, 18.1, 17.2, 12.4, 18.0, 14.4, 13.8, 15.7, 15.5, 14.0, // May 22.9, 22.5, 21.2, 17.5, 23.3, 22.0, 17.6, 18.4, 19.6, 21.4, 11.5, 20.4, 20.2, 14.9, 15.7, 24.4, 13.1, 22.0, 25.1, 15.5, 21.0, 18.9, 26.6, 17.3, 13.7, 15.8, 22.6, 20.8, 23.2, 20.0, // Jun 24.7, 18.6, 22.8, 21.0, 26.4, 20.6, 22.4, 18.6, 24.9, 20.5, 12.2, 22.9, 24.8, 27.1, 18.9, 20.9, 18.8, 23.1, 21.2, 24.0, 24.3, 21.4, 19.1, 24.1, 23.3, 20.2, 19.0, 24.5, 22.8, 19.3, 19.4, // Jul 18.1, 23.5, 18.0, 18.4, 18.2, 17.9, 18.5, 19.3, 14.7, 19.4, 27.8, 21.5, 21.1, 15.5, 23.0, 14.2, 20.6, 19.7, 21.8, 18.5, 14.4, 23.1, 19.8, 14.1, 26.0, 14.6, 16.2, 23.5, 18.0, 15.1, 20.3, // Ago 15.9, 13.5, 11.9, 10.1, 7.8, 14.3, 3.7, 14.9, 13.0, 10.3, 15.6, 22.2, 14.9, 19.8, 16.7, 8.1, 10.7, 17.7, 18.3, 15.1, 18.8, 17.5, 17.1, 10.6, 21.4, 18.2, 14.6, 16.4, 13.6, 17.1, // Sep 7.3, 3.9, 8.4, 8.9, 6.3, 4.5, 10.7, 8.2, 7.5, 9.4, 5.7, 8.4, 10.1, 9.9, 6.0, 9.6, 6.1, 2.5, 14.1, 4.6, 13.2, -1.7, 6.2, 5.7, -0.9, 3.7, 4.9, 2.6, 7.6, 8.4, 10.4, // Oct 1.3, 3.9, 7.6, 5.8, 3.4, -3.7, 3.8, 0.9, 0.4, 1.1, -6.3, 3.2, -0.1, 6.3, 4.8, -0.2, 2.3, -2.6, 2.3, -7.6, -1.8, 1.6, -3.2, 0.2, 0.2, 1.6, 3.1, 5.4, 3.7, 2.3, // Nov -1.1, -0.7, -3.4, -6.8, -5.8, -3.3, -0.5, 3.6, 1.8, -4.2, -1.3, -3.5, -2.8, -9.9, -3.2, -4.7, -3.9, -7.1, -4.5, -2.4, -2.8, -0.4, -6.4, -1.2, -3.0, 2.2, -0.3, -2.5, -5.7, -7.6, -0.5 // Dic }; // Hay 2 olas de frío de 16 días (una cerca del principio y otra cerca del final). verificaResultado(1, 16, duraciónMayorOlaFrío(año1)); double [] año2 = año1; año2[7] = 1.0; // Elimina la primera ola de 16 días. verificaResultado(2, 16, duraciónMayorOlaFrío(año2)); double [] año3 = año2; año3[353] = 1.0; // Elimina la segunda ola de 16 días. Ahora la mayor es de 14 días. verificaResultado(3, 14, duraciónMayorOlaFrío(año3)); double [] año4 = { -8.9, -6.4, 3.7, 1.2, -1.0, -3.5, -6.6, -0.1, -3.6, -5.7, -4.0, -4.4, -4.3, -4.8, -6.3, 3.1, -2.1, -7.4, -7.5, -5.3, -4.7, -2.4, -2.5, -10.1, -1.8, -8.0, -5.5, -4.3, -1.9, -8.0, -7.2, // Ene -1.4, -1.4, -5.6, 3.1, -3.0, -6.5, -0.8, -3.2, -7.1, -3.5, -4.4, -3.2, -5.6, -3.1, -3.5, -6.5, -1.1, -2.0, -2.0, -4.4, -5.1, -0.5, -4.7, -2.2, -2.5, -6.0, -3.8, -4.8, -4.0, // Feb -1.6, 3.0, -1.8, 1.1, 3.9, 5.5, -6.4, 1.3, 5.3, 0.4, 0.2, -4.6, -1.0, -0.2, -2.8, 1.9, 0.7, 0.4, 2.9, 3.6, 5.4, -2.3, 3.9, 3.7, -1.2, 8.7, -0.0, 2.5, 0.1, 0.4, 2.0, // Mar 6.4, 9.2, 11.3, 7.9, 9.1, 9.7, 9.8, 7.9, 8.6, 11.3, 7.8, 7.4, 6.8, 9.5, 9.7, 9.7, 8.4, 6.3, 4.3, 3.2, 3.9, 10.3, 5.1, 7.8, 7.2, 8.2, 7.5, 11.5, 7.8, 10.5, // Abr 13.1, 14.8, 16.2, 13.2, 13.3, 16.5, 17.1, 16.0, 17.0, 10.9, 11.8, 15.9, 14.9, 16.1, 17.5, 14.4, 15.2, 13.1, 14.9, 14.4, 16.6, 17.6, 14.2, 17.2, 15.4, 17.2, 18.9, 13.7, 16.8, 14.2, 13.2, // May 17.4, 18.9, 19.2, 19.9, 16.9, 16.5, 22.5, 24.1, 19.7, 20.5, 21.7, 17.5, 19.2, 24.0, 22.5, 21.4, 18.2, 22.3, 14.7, 17.9, 20.0, 24.1, 21.4, 23.2, 16.9, 18.4, 21.3, 23.6, 23.7, 21.4, // Jun 35.3, 23.9, 24.5, 26.0, 18.1, 19.7, 20.5, 20.6, 22.1, 21.6, 21.6, 17.9, 16.5, 26.5, 16.9, 22.6, 21.6, 23.1, 20.8, 20.5, 23.6, 21.1, 23.7, 22.2, 25.0, 19.2, 15.6, 21.2, 24.2, 23.2, 20.8, // Jul 16.7, 26.1, 23.9, 17.6, 26.0, 18.4, 21.2, 16.2, 23.1, 15.6, 17.7, 18.7, 16.9, 22.4, 23.0, 17.7, 20.0, 22.0, 17.3, 21.4, 14.1, 23.3, 22.4, 23.3, 20.4, 14.3, 17.4, 26.3, 25.7, 18.3, 17.5, // Ago 14.5, 11.5, 16.3, 14.6, 11.9, 18.9, 14.6, 15.9, 12.9, 16.1, 15.0, 17.4, 14.9, 9.4, 20.8, 16.7, 22.3, 11.5, 18.6, 19.8, 12.5, 14.8, 16.5, 12.0, 8.7, 11.1, 8.9, 10.2, 16.6, 12.8, // Sep 4.9, -0.3, 12.5, 12.4, 6.7, 9.6, 13.0, 8.5, 5.0, 10.3, 9.3, 9.0, 10.7, 7.6, 8.6, 5.5, 10.1, 5.2, 18.1, 2.6, 13.1, 5.0, 7.2, 7.6, 10.5, 8.1, 7.2, 9.0, 10.1, 3.0, 8.8, // Oct 4.6, 0.3, 0.6, 1.6, 3.4, 2.5, -0.8, -1.5, -4.5, -2.3, 4.3, 0.2, 9.7, 2.3, -2.4, 1.9, 3.3, 1.0, 0.9, 1.8, 9.1, 7.5, 0.5, 1.1, 4.0, 5.5, -9.4, 4.7, 1.9, -4.9, // Nov 7.6, -3.2, -3.2, -2.7, -1.8, -1.2, -0.2, -0.3, -3.7, -1.9, -2.3, -2.1, -1.4, -1.3, -3.5, -1.1, -7.9, -2.0, -0.2, -6.1, -1.9, -1.0, -0.1, -4.5, -4.1, -0.8, -3.6, -1.6, -3.0, -1.0, -0.6 // Dic }; // Mayor ola de frío de 30 días (justo al final). verificaResultado(4, 30, duraciónMayorOlaFrío(año4)); double [] año5 = { -6.3, -4.7, -10.7, -9.7, -6.9, 1.1, -6.4, 0.3, -2.0, -1.9, -7.8, -9.0, 5.5, 1.7, -6.6, -9.4, 4.0, 1.6, -5.4, -5.1, -10.0, -0.8, -6.3, 1.7, -4.3, -8.1, -7.5, -3.3, 1.6, -5.6, -4.4, // Ene 0.1, 10.5, 3.4, -8.3, -2.6, -10.1, -6.1, 0.8, -4.4, -6.2, 5.5, 0.7, -1.1, -5.4, -7.2, -4.1, 3.1, -6.8, -6.9, -5.9, -3.8, -4.7, 2.3, -5.4, -3.1, -3.5, -2.2, -5.2, // Feb 3.2, -4.1, 1.7, 6.3, 3.5, -1.2, 0.7, 0.4, 4.4, 3.3, 1.9, -1.8, 0.6, 4.4, 3.3, 2.7, 1.0, 3.5, -0.9, -1.3, 0.7, -2.8, 11.1, -5.4, -2.1, -2.9, 4.1, -2.9, -4.6, 2.2, -5.8, // Mar 9.8, 4.6, 6.8, 9.9, 4.2, 14.6, 10.3, 7.4, 5.1, 14.0, 1.4, 9.7, 2.9, 15.9, 11.2, 12.2, 11.8, 14.6, 7.9, 12.3, 7.9, 12.2, 7.9, 6.6, 6.1, 9.2, 6.1, 8.0, 6.0, 7.6, // Abr 17.2, 17.6, 13.7, 17.5, 14.8, 16.7, 18.2, 16.2, 18.3, 11.8, 11.7, 21.5, 16.8, 19.1, 17.6, 17.7, 10.1, 14.2, 21.0, 16.0, 20.2, 11.8, 19.9, 17.6, 19.2, 14.6, 17.1, 13.9, 13.2, 12.9, 16.8, // May 19.5, 25.6, 17.9, 14.3, 24.7, 20.4, 20.9, 18.1, 19.7, 10.9, 16.2, 18.6, 21.2, 20.2, 19.7, 30.8, 25.0, 16.7, 18.8, 26.8, 19.0, 18.0, 21.7, 22.0, 19.3, 24.9, 22.1, 27.4, 22.5, 18.8, // Jun 17.8, 17.9, 23.7, 19.2, 22.8, 19.4, 23.1, 28.1, 16.3, 27.3, 22.8, 25.3, 26.0, 25.6, 21.9, 22.4, 22.5, 16.3, 19.7, 25.9, 26.6, 29.1, 18.8, 23.4, 28.9, 19.9, 22.1, 20.6, 23.5, 20.6, 22.5, // Jul 15.5, 26.0, 19.8, 15.8, 8.4, 20.6, 17.7, 12.9, 19.6, 22.2, 19.4, 26.8, 17.3, 17.3, 21.3, 19.5, 21.1, 20.7, 19.7, 22.5, 17.7, 17.0, 18.7, 22.9, 18.1, 18.6, 23.2, 19.1, 20.5, 19.6, 21.2, // Ago 15.4, 14.2, 15.0, 14.1, 13.1, 15.3, 19.1, 13.0, 14.6, 18.8, 11.0, 19.5, 20.9, 7.6, 10.0, 9.7, 6.8, 20.5, 17.3, 13.8, 11.9, 9.3, 16.3, 12.6, 11.5, 15.7, 14.3, 14.7, 17.6, 14.5, // Sep 7.0, 8.1, 11.0, 8.9, 11.8, 10.7, 4.3, 12.7, 3.7, 8.1, 5.6, 7.8, 3.8, 10.3, 4.7, 3.4, 6.7, 3.9, 10.2, 7.3, 8.8, 6.6, 8.9, 6.6, 6.8, 12.8, 6.4, 5.0, 16.5, 15.9, 17.6, // Oct -2.3, 1.9, 4.0, 1.8, -2.1, 6.4, 3.1, 0.8, 6.5, 1.4, 1.3, -3.9, 10.5, 4.1, 0.4, 2.9, 3.8, 2.2, -0.3, 6.6, 2.4, 3.6, -1.6, 3.0, 2.6, 0.6, 1.3, 3.0, -2.8, 2.6, // Nov -10.3, -5.7, 1.9, 4.5, -2.4, 0.6, 5.5, 0.7, -4.4, -2.3, -8.3, 5.5, -1.8, -6.3, -5.3, 5.5, 2.6, -0.5, -3.3, 0.5, -2.1, -9.8, -4.9, 1.0, -1.7, -4.9, -2.7, 2.8, -5.3, -1.9, -2.0 // Dic }; // No hay ninguna ola de frío. El máximo es 5. verificaResultado(5, 0, duraciónMayorOlaFrío(año5)); double [] año6 = {-1.1, -2.1, -3.1, -4.1, -5.1, -6.1, -7.1, -8.1, -9.1, -10.1}; // Todo el vector es una ola de frío de tamaño 10. verificaResultado(6, 10, duraciónMayorOlaFrío(año6)); } public static void verificaResultado(int año, int resultadoCorrecto, int miResultado) { System.out.print("La mayor ola de frío para el año" + año + " es "); if (miResultado == resultadoCorrecto) { System.out.println("correcta ("+ miResultado + ")."); } else { System.out.println("incorrecta (debería ser "+ resultadoCorrecto + " en lugar de " + miResultado + ")."); } } public static int duraciónMayorOlaFrío(double [] temperaturas){ int duracionOlaFrio = 0, duracionOlaFrioMaxima = 0; for (int i = 0; i < temperaturas.length; i++) { if (temperaturas[i] < 0) duracionOlaFrio++; else duracionOlaFrio = 0; if (duracionOlaFrio > 5 && duracionOlaFrio > duracionOlaFrioMaxima) duracionOlaFrioMaxima = duracionOlaFrio; } return duracionOlaFrioMaxima; } }