Задача с матрицами. Произведение - C#
Формулировка задачи:
Помогите сделать задачу?Есть две матрицы А и Б размером nxm и mxn соответственно. Нужно получить матрицу С nxn, которая будет произведением матриц А и В. Размер матриц вводятся пользователем. Данные сгенерировать случайным образом.
Решение задачи: «Задача с матрицами. Произведение»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace ConsoleApp1 { public class Program { public void Main(string[] args) { Random r = new Random(); Console.WriteLine("Введите размерность первой матрицы: "); int[,] A = new int[Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine())]; for (int i = 0; i < A.GetLength(0); i++) { for (int j = 0; j < A.GetLength(1); j++) { A[i, j] = r.Next(50); } } Console.WriteLine("Введите размерность второй матрицы: "); int[,] B = new int[Convert.ToInt32(Console.ReadLine()), Convert.ToInt32(Console.ReadLine())]; for (int i = 0; i < B.GetLength(0); i++) { for (int j = 0; j < B.GetLength(1); j++) { B[i, j] = r.Next(50); } } Console.WriteLine("\nМатрица A:"); Print(A); Console.WriteLine("\nМатрица B:"); Print(B); Console.WriteLine("\nМатрица C = A * B:"); int[,] C = Multiplication(A, B); Print(C); Console.ReadLine(); } static int[,] Multiplication(int[,] a, int[,] b) { if (a.GetLength(1) != b.GetLength(0)) throw new Exception("Матрицы нельзя перемножить"); int[,] r = new int[a.GetLength(0), b.GetLength(1)]; for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < b.GetLength(1); j++) { for (int k = 0; k < b.GetLength(0); k++) { r[i, j] += a[i, k] * b[k, j]; } } } return r; } static void Print(int[,] a) { for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < a.GetLength(1); j++) { Console.Write("{0} ", a[i, j]); } Console.WriteLine(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д