Умножение матриц - 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д