Умножение матриц - C# (178058)

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Написал вот такой код для умножения матриц .
Листинг программы
  1. int matra = a.GetLength(0);
  2. int matrb = b.GetLength(0);
  3. int rasmb = b.GetLength(1);
  4. int[,] r = new int [matra, razmb];
  5. for (int i = 0; i < a.GetLength(0); i++)
  6. {
  7. for (int j = 0; j < razmb; j++)
  8. {
  9. for (int k = 0; k <matrb; k++)
  10. {
  11. r[i, j] += a[i, k] * b[k, j];
  12. }
  13. }
  14. }
Нужно перемножить две матрицы. Матрицы будут приведены ниже. Проблема в том,что не могу понять где ошибка, т.к часть элементов считает правильно ,другую нет . В итоге матрица должна получится как на рисунке, а меня получается вот такая которая представлена на втором скрине.

Решение задачи: «Умножение матриц»

textual
Листинг программы
  1. using System;
  2.  
  3. namespace ConsoleApplication5
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             int[,] arr = new int[,] { { 0,0,0,1 }, {1,0,0,1 }, {0,1,0,0 }, {0,0,1,0 } };
  10.             int[,] arr1 = new int[,] { {1,0,0,1 }, {0,1,1,1 }, {1,1,0,0 }, {0,1,0,0 } };
  11.                    
  12.             int[,] arr2 = Multiplication(arr, arr1);
  13.             Console.WriteLine("Произведение матриц:");
  14.             for (int i = 0; i < 4; i++)
  15.             {
  16.                 for (int j = 0; j < 4; j++)
  17.                 {
  18.                     Console.Write(arr2[i, j]);
  19.                 }
  20.                 Console.WriteLine(" ");
  21.             }
  22.  
  23.             Console.ReadKey();
  24.         }
  25.         static int[,] Multiplication(int[,] a, int[,] b)
  26.         {
  27.             int[,] r = new int[a.Length, b.Length];
  28.             for (int i = 0; i < b.GetLength(1); i++)
  29.             {
  30.                 for (int j = 0; j < b.GetLength(0); j++)
  31.                 {
  32.                     r[i, j] = 0;
  33.                     for (int k = 0; k < b.GetLength(0); k++)
  34.                     {
  35.                         r[i, j] += a[i, k] * b[k, j];
  36.                     }
  37.                 }
  38.             }
  39.             return r;
  40.         }      
  41.         }
  42.     }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут