Умножение матриц - 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;
}
}
}