예제 #1
0
        static void Main(string[] args)
        {
            Stopwatch    stopWatch = new Stopwatch();
            StreamReader objReader = new StreamReader("C:\\Users\\gusta\\Downloads\\ejemplo2.txt");

            String[,] resultado;
            string sline = "";
            int    cont  = 0;

            // Se lee cuantas lienas tiene el archivo para crear la matriz
            while (sline != null)
            {
                sline = objReader.ReadLine();
                if (sline != null)
                {
                    cont++;
                }
            }

            String[] temp = new String[4];
            resultado = new String[cont, 4];
            int cont2 = 0;

            objReader.Close();
            StreamReader objReader2 = new StreamReader("C:\\Users\\gusta\\Downloads\\ejemplo2.txt");

            sline = "";

            //Se llena la matriz principal en base al archivo txt y separada por los delimitadores ":" para utilizar sus datos mas adelante
            while ((sline = objReader2.ReadLine()) != null)
            {
                temp = sline.Split(':');

                for (int i = 0; i < resultado.GetLength(1); i++)
                {
                    resultado[cont2, i] = temp[i];
                }
                cont2++;
            }
            objReader2.Close();


            //Se saca cual linea de valores de la matriz principal tiene mas numeros para en base a eso crear la matriz de valores enteros de abajo
            int lineaMayor = 0;

            for (int i = 0; i < resultado.GetLength(0); i++)
            {
                string[] nums;
                nums = resultado[i, 2].Split(' ');
                if (lineaMayor < nums.Length)
                {
                    lineaMayor = nums.Length;
                }
            }

            /*Se crea una matriz en donde se almacenarán los valores por linea que mas adelante le mandaremos los metodos de la clase
             * ademas se valida cuando el tipo de dato es diferente al que recibe la matriz*/
            int[,] resultado2 = new int[resultado.GetLength(0), lineaMayor];
            for (int columna = 0; columna < resultado.GetLength(0); columna++)
            {
                string[] nums2;
                nums2 = resultado[columna, 2].Split(' ');

                for (int fila = 0; fila < nums2.Length; fila++)
                {
                    //Problema 6
                    if (nums2[fila] != "NULL")
                    {
                        resultado2[columna, fila] = Convert.ToInt32(nums2[fila]);
                    }
                    else
                    {
                        resultado2[columna, fila] = -1;
                    }
                }
            }

            /* Se crean los vectores del tipo de problema, del id del problema y de los valores que deberían de resultar de la ejecución del programa
             * apartir de la matriz donde se encuentran todas las lineas del txt separadas por sus delimitadores
             * ademas se valida cuando el tipo de dato es diferente al que el vector puede recibir*/
            String[] tipo       = new String[resultado.GetLength(0)];
            String[] id         = new String[resultado.GetLength(0)];
            double[] resultado3 = new double[resultado.GetLength(0)];
            for (int i = 0; i < resultado.GetLength(0); i++)
            {
                id[i]   = Convert.ToString(resultado[i, 0]);
                tipo[i] = Convert.ToString(resultado[i, 1]);
                if (resultado[i, 3] != "Exception")
                {
                    resultado3[i] = Convert.ToDouble(resultado[i, 3]);
                }
                else
                {
                    resultado3[i] = -2;
                }
            }

            //Problema 5

            /*Es donde se le mandan los valores de cada una de las lineas a los diferentes metodos para que se resuelvan
             * y se los resultados se van almacneando en un vector y se mide el tiempo que tardo en ejecutarse y se almacenan en un vector*/
            double[] tiempos = new double[tipo.Length];
            double[] valores = new double[tipo.Length];
            for (int i = 0; i < tipo.Length; i++)
            {
                stopWatch.Start();
                int[]  valoresTemp = new int[resultado2.GetLength(1)];
                Medias med         = new Medias();
                //Se almacena en un vector temporal los valores de cada una de las lineas de la matriz que representa una linea del archivo para mandarla a los metodos
                for (int j = 0; j < resultado2.GetLength(1); j++)
                {
                    //if (resultado2[i, j] != 0)
                    valoresTemp[j] = resultado2[i, j];
                }

                /*Antes de mandar los valores a los metodos se quitan los numeros que son 0 que son los que sobran en cada linea de la matriz eliminado los numeros que sean 0
                 * y eliminando esos espacios del vector para que no afecte a las operaciones*/
                valoresTemp = valoresTemp.Where(num => num != 0).ToArray();
                double res = 0;
                if (tipo[i] == "mediaAritmetica")
                {
                    res        = Medias.mediaAritmetica(valoresTemp);
                    valores[i] = res;
                }
                else if (tipo[i] == "mediaGeometrica")
                {
                    res        = med.mediaGeometrica(valoresTemp);
                    valores[i] = res;
                }
                else if (tipo[i] == "mediaArmonica")
                {
                    valores[i] = -3;
                }
                else
                {
                    stopWatch.Start();
                    valores[i] = -4;
                }
                stopWatch.Stop();
                tiempos[i] = stopWatch.ElapsedMilliseconds;
            }

            //Cambio los valores de -1 a 0 porque si no me marcaba un valor raro en el vector
            for (int i = 0; i < valores.Length; i++)
            {
                if (valores[i] == -1)
                {
                    valores[i] = 0;
                }
            }

            //Se crea el vector de si el problema tuvo exito o error
            int fallas = 0;
            int bien   = 0;

            String[] color = new String[valores.Length];
            for (int i = 0; i < valores.Length; i++)
            {
                if (valores[i] == -3 || valores[i] == -4)
                {
                    color[i] = null;
                }
                else if (resultado3[i] == valores[i])
                {
                    color[i] = "Exito";
                    bien++;
                }
                else
                {
                    color[i] = "Falla";
                    fallas++;
                }
            }

            //Imprimir todo en el archivo txt
            String       time = DateTime.Now.ToString("dd-MM-yyyy HH-mm-ss");
            StreamWriter sw   = new StreamWriter("C:\\Users\\gusta\\Downloads\\" + time + ".txt");

            for (int i = 0; i < valores.Length; i++)
            {
                if (resultado3[i] == -2)
                {
                    sw.WriteLine(id[i] + ": " + color[i] + ": " + tipo[i] + ": " + "Calculado = " + valores[i] + ":" + "Esperado = Exception");
                }

                else if (valores[i] == -4 || valores[i] == -3)
                {
                    sw.WriteLine(id[i] + ":" + tipo[i] + " Metodo no encontrado");
                }
                else
                {
                    sw.WriteLine(id[i] + ": " + color[i] + ": " + tipo[i] + ": " + "Calculado = " + valores[i] + ":" + "Esperado = " + resultado3[i] + ":" + "Ejecución: " + tiempos[i] + " ms");
                }
            }
            sw.WriteLine("Exitoso: " + bien);
            sw.WriteLine("Fallas:" + fallas);
            sw.Close();


            //Imprimir todo en Consola
            for (int i = 0; i < valores.Length; i++)
            {
                if (resultado3[i] == -2)
                {
                    Console.Write(id[i]);
                    Console.Write(": ");
                    if (color[i] == "Exito")
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write(color[i]);
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write(color[i]);
                    }
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write(": " + tipo[i] + ": " + "Calculado = " + valores[i] + ":" + "Esperado = Exception");
                    Console.WriteLine();
                }
                else if (valores[i] == -4 || valores[i] == -3)
                {
                    Console.WriteLine(id[i] + ":" + tipo[i] + " Metodo no encontrado");
                }
                else
                {
                    Console.Write(id[i]);
                    Console.Write(": ");
                    if (color[i] == "Exito")
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write(color[i]);
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.Write(color[i]);
                    }
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write(": " + tipo[i] + ": " + "Calculado = " + valores[i] + ":" + "Esperado = " + resultado3[i] + ":" + "Ejecución: " + tiempos[i] + " ms");
                    Console.WriteLine();
                }
            }
            Console.ReadLine();
        }
예제 #2
0
        static void Main(string[] args)
        {
            string[]     nums;
            string[]     nums2;
            StreamReader objReader = new StreamReader("C:\\Users\\gusta\\Downloads\\ejemplo2.txt");
            string       sline     = "";
            int          cont      = 0;

            String[,] resultado;

            while (sline != null)
            {
                sline = objReader.ReadLine();
                if (sline != null)
                {
                    cont++;
                }
            }

            resultado = new String[cont, 4];
            String[] temp  = new String[4];
            int      cont2 = 0;

            objReader.Close();
            StreamReader objReader2 = new StreamReader("C:\\Users\\gusta\\Downloads\\ejemplo2.txt");

            sline = "";

            while ((sline = objReader2.ReadLine()) != null)
            {
                temp = sline.Split(':');

                for (int i = 0; i < resultado.GetLength(1); i++)
                {
                    resultado[cont2, i] = temp[i];
                }
                cont2++;
            }
            objReader2.Close();

            int lineaMayor = 0;

            for (int i = 0; i < resultado.GetLength(0); i++)
            {
                nums = resultado[i, 2].Split(' ');
                if (lineaMayor < nums.Length)
                {
                    lineaMayor = nums.Length;
                }
            }

            int[,] resultado2 = new int[resultado.GetLength(0), lineaMayor];
            for (int columna = 0; columna < resultado.GetLength(0); columna++)
            {
                nums2 = resultado[columna, 2].Split(' ');

                for (int fila = 0; fila < nums2.Length; fila++)
                {
                    //Problema 6
                    if (nums2[fila] != "NULL")
                    {
                        resultado2[columna, fila] = Convert.ToInt32(nums2[fila]);
                    }
                    else
                    {
                        resultado2[columna, fila] = -1;
                    }
                }
            }

            String[] tipo       = new String[resultado.GetLength(0)];
            double[] resultado3 = new double[resultado.GetLength(0)];
            for (int i = 0; i < resultado.GetLength(0); i++)
            {
                tipo[i] = Convert.ToString(resultado[i, 1]);
                if (resultado[i, 3] != "Exception")
                {
                    resultado3[i] = Convert.ToDouble(resultado[i, 3]);
                }
                else
                {
                    resultado3[i] = -1;
                }
            }

            //Problema 5
            double[] valores = new double[tipo.Length];
            for (int i = 0; i < tipo.Length; i++)
            {
                int[]  valoresTemp = new int[resultado2.GetLength(1)];
                Medias med         = new Medias();

                for (int j = 0; j < resultado2.GetLength(1); j++)
                {
                    if (resultado2[i, j] != 0)
                    {
                        valoresTemp[j] = resultado2[i, j];
                    }
                }
                valoresTemp = valoresTemp.Where(num => num != 0).ToArray();

                double res = 0;
                if (tipo[i] == "mediaAritmetica")
                {
                    res        = Medias.mediaAritmetica(valoresTemp);
                    valores[i] = res;
                }
                else if (tipo[i] == "mediaGeometrica")
                {
                    res        = med.mediaGeometrica(valoresTemp);
                    valores[i] = res;
                }
                else if (tipo[i] == "mediaArmonica")
                {
                    res        = Medias.mediaArmonica(valoresTemp);
                    valores[i] = res;
                }
                else
                {
                    valores[i] = -1;
                    Console.WriteLine("No existe");
                }
            }
            // nums = resultado[i, 2].Split(' ');
            //int[] ints = nums.Select(x => int.Parse(x)).ToArray();
            //nums2 = resultado[1, 2].Split(' ');
            //int[] ints2 = nums.Select(x => int.Parse(x)).ToArray();
            //nums3 = resultado[2, 2].Split(' ');
            //int[] ints3 = nums.Select(x => int.Parse(x)).ToArray();


            //double res1 = Convert.ToDouble(resultado[0, 3]);
            //double res2 = Convert.ToDouble(resultado[1, 3]);
            //double res3 = Convert.ToDouble(resultado[2, 3]);
            //Console.WriteLine(resultado.GetLength(0));
            Console.ReadLine();
        }
예제 #3
0
        static void Main(string[] args)
        {
            Stopwatch stopWatch = new Stopwatch();

            string[]     nums;
            string[]     nums2;
            StreamReader objReader = new StreamReader("C:\\Users\\gusta\\Downloads\\ejemplo2.txt");
            string       sline     = "";
            int          cont      = 0;

            String[,] resultado;

            while (sline != null)
            {
                sline = objReader.ReadLine();
                if (sline != null)
                {
                    cont++;
                }
            }

            String[] temp = new String[4];
            resultado = new String[cont, 4];
            int cont2 = 0;

            objReader.Close();
            StreamReader objReader2 = new StreamReader("C:\\Users\\gusta\\Downloads\\ejemplo2.txt");

            sline = "";

            while ((sline = objReader2.ReadLine()) != null)
            {
                temp = sline.Split(':');

                for (int i = 0; i < resultado.GetLength(1); i++)
                {
                    resultado[cont2, i] = temp[i];
                }
                cont2++;
            }
            objReader2.Close();

            int lineaMayor = 0;

            for (int i = 0; i < resultado.GetLength(0); i++)
            {
                nums = resultado[i, 2].Split(' ');
                if (lineaMayor < nums.Length)
                {
                    lineaMayor = nums.Length;
                }
            }

            int[,] resultado2 = new int[resultado.GetLength(0), lineaMayor];
            for (int columna = 0; columna < resultado.GetLength(0); columna++)
            {
                nums2 = resultado[columna, 2].Split(' ');

                for (int fila = 0; fila < nums2.Length; fila++)
                {
                    //Problema 6
                    if (nums2[fila] != "NULL")
                    {
                        resultado2[columna, fila] = Convert.ToInt32(nums2[fila]);
                    }
                    else
                    {
                        resultado2[columna, fila] = -1;
                    }
                }
            }

            String[] tipo       = new String[resultado.GetLength(0)];
            String[] id         = new String[resultado.GetLength(0)];
            double[] resultado3 = new double[resultado.GetLength(0)];
            for (int i = 0; i < resultado.GetLength(0); i++)
            {
                id[i]   = Convert.ToString(resultado[i, 0]);
                tipo[i] = Convert.ToString(resultado[i, 1]);
                //Problema 7
                if (resultado[i, 3] != "Exception")
                {
                    resultado3[i] = Convert.ToDouble(resultado[i, 3]);
                }
                else
                {
                    resultado3[i] = -2;
                }
            }

            double[] tiempos = new double[tipo.Length];
            //Problema 5
            double[] valores = new double[tipo.Length];
            for (int i = 0; i < tipo.Length; i++)
            {
                int[]  valoresTemp = new int[resultado2.GetLength(1)];
                Medias med         = new Medias();

                for (int j = 0; j < resultado2.GetLength(1); j++)
                {
                    if (resultado2[i, j] != 0)
                    {
                        valoresTemp[j] = resultado2[i, j];
                    }
                }
                valoresTemp = valoresTemp.Where(num => num != 0).ToArray();

                double res = 0;
                if (tipo[i] == "mediaAritmetica")
                {
                    stopWatch.Start();
                    res        = Medias.mediaAritmetica(valoresTemp);
                    valores[i] = res;
                    stopWatch.Stop();
                    tiempos[i] = stopWatch.ElapsedMilliseconds;
                }
                else if (tipo[i] == "mediaGeometrica")
                {
                    stopWatch.Start();
                    res        = med.mediaGeometrica(valoresTemp);
                    valores[i] = res;
                    stopWatch.Stop();
                    tiempos[i] = stopWatch.ElapsedMilliseconds;
                }
                else if (tipo[i] == "mediaArmonica")
                {
                    //res = Medias.mediaArmonica(valoresTemp);
                    stopWatch.Start();
                    valores[i] = -3;
                    stopWatch.Stop();
                    tiempos[i] = stopWatch.ElapsedMilliseconds;
                }
                else
                {
                    stopWatch.Start();
                    valores[i] = -4;
                    stopWatch.Stop();
                    tiempos[i] = stopWatch.ElapsedMilliseconds;
                }
            }

            for (int i = 0; i < valores.Length; i++)
            {
                if (valores[i] == -1)
                {
                    valores[i] = 0;
                }
            }
            Console.ReadLine();
        }