예제 #1
0
        public static Matriz LlenarMatrizAutomaticamente(Matriz matriz)
        {
            var filas    = matriz.Numeros.GetLength(0);
            var columnas = matriz.Numeros.GetLength(1);

            for (int i = 0; i < filas; i++)
            {
                for (int j = 0; j < columnas; j++)
                {
                    var aleatorio = new Random();
                    matriz.Numeros[i, j] = aleatorio.Next(0, 100);
                }
            }
            return(matriz);
        }
예제 #2
0
        public static Matriz LlenarMatrizUsuario(Matriz matriz)
        {
            var filas    = matriz.Numeros.GetLength(0);
            var columnas = matriz.Numeros.GetLength(1);

            Console.WriteLine("Matriz " + matriz.Nombre);
            for (int i = 0; i < filas; i++)
            {
                Console.WriteLine("Fila {0}", i);
                for (int j = 0; j < columnas; j++)
                {
                    Console.WriteLine("Columna {0}", j);
                    matriz.Numeros[i, j] = int.Parse(Console.ReadLine());
                }
            }
            return(matriz);
        }
예제 #3
0
        public static Matriz Multiplicar(Matriz matrizA, Matriz matrizB)
        {
            int filasMatrizA    = matrizA.Numeros.GetLength(0);
            int columnasMatrizB = matrizB.Numeros.GetLength(1);

            Matriz matrizProducto = new Matriz();

            matrizProducto.Numeros = new double[filasMatrizA, columnasMatrizB];

            for (int i = 0; i < filasMatrizA; i++)
            {
                for (int j = 0; j < columnasMatrizB; j++)
                {
                    for (int k = 0; k < matrizA.Numeros.GetLength(1); k++)
                    {
                        matrizProducto.Numeros[i, j] += matrizA.Numeros[i, k] * matrizB.Numeros[k, j];
                    }
                }
            }

            return(matrizProducto);
        }
예제 #4
0
        private static Matriz MutiplicarParalelamente(Matriz matrizA, Matriz matrizB)
        {
            int filasMatrizA    = matrizA.Numeros.GetLength(0);
            int columnasMatrizA = matrizA.Numeros.GetLength(1);
            int columnasMatrizB = matrizB.Numeros.GetLength(1);

            Matriz matrizC = new Matriz();

            matrizC.Numeros = new double[filasMatrizA, columnasMatrizA];

            Parallel.For(0, filasMatrizA, i =>
            {
                Parallel.For(0, columnasMatrizB, j =>
                {
                    matrizC.Numeros[i, j] = 0;
                    for (int k = 0; k < filasMatrizA; k++)
                    {
                        matrizC.Numeros[i, j] += matrizA.Numeros[i, k] * matrizB.Numeros[k, j];
                    }
                });
            });
            return(matrizC);
        }