Умножение матриц - C# (178058)
Формулировка задачи:
Добрый вечер. Написал вот такой код для умножения матриц .
Нужно перемножить две матрицы.
Матрицы будут приведены ниже. Проблема в том,что не могу понять где ошибка, т.к часть элементов считает правильно ,другую нет . В итоге матрица должна получится как на рисунке, а меня получается вот такая которая представлена на втором скрине.
int matra = a.GetLength(0); int matrb = b.GetLength(0); int rasmb = b.GetLength(1); int[,] r = new int [matra, razmb]; for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < razmb; j++) { for (int k = 0; k <matrb; k++) { r[i, j] += a[i, k] * b[k, j]; } } }
Решение задачи: «Умножение матриц»
textual
Листинг программы
using System; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { int[,] arr = new int[,] { { 0,0,0,1 }, {1,0,0,1 }, {0,1,0,0 }, {0,0,1,0 } }; int[,] arr1 = new int[,] { {1,0,0,1 }, {0,1,1,1 }, {1,1,0,0 }, {0,1,0,0 } }; int[,] arr2 = Multiplication(arr, arr1); Console.WriteLine("Произведение матриц:"); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { Console.Write(arr2[i, j]); } Console.WriteLine(" "); } Console.ReadKey(); } static int[,] Multiplication(int[,] a, int[,] b) { int[,] r = new int[a.Length, b.Length]; for (int i = 0; i < b.GetLength(1); i++) { for (int j = 0; j < b.GetLength(0); j++) { r[i, j] = 0; for (int k = 0; k < b.GetLength(0); k++) { r[i, j] += a[i, k] * b[k, j]; } } } return r; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д