public static string GetNextTenYearsReport() { // evalúo de acá a 10 años var lluvia = 0; var sequia = 0; var condOptima = 0; var DiaLluviaMaxima = new MaxRain(); // se asume dos años biciestos en el período for (int i = 0; i <= (360 + 2) * 10; i++) { switch (GetWeather(i, ref DiaLluviaMaxima)) { // se asume los días de lluvia máxima también deben ser contados como días de lluvia case "lluvia": lluvia++; break; case "sequia": sequia++; break; case "optimo": condOptima++; break; } } return(ImprimirValores(sequia, lluvia, DiaLluviaMaxima.Day, condOptima)); }
public static string GetWeather(int day, ref MaxRain max) { var F = new Coords(); var B = new Coords(); var V = new Coords(); //obtengo las coordenadas para los tres planetas en el día actual GetCoordinates(day, out F, out B, out V); // check si los planetas se encuentran alineados if (Aligned(F, B, V)) { // si están alineados, verificar si están alineados con el sol también if (AlignedWithSun(F, B, V)) { // si es así éste día es de sequía return("sequia"); } else { // si no están alineados con el sol la condición es óptima return("optimo"); } } else { //no están alineados así que forman un triángulo if (TriangleIncludesSun(F, B, V)) { var per = Perimetro(F, B, V); if (max.Perim < per) { max.Perim = per; max.Day = day; } return("lluvia"); } else { // el enunciado no determina que tipo de clima padece el sistema cuando el triángulo // no incluye al sol, se asume que es un período climático normal return("normal"); } } }