Example #1
0
        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));
        }
Example #2
0
        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");
                }
            }
        }