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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5