Віднімання матриць – одна з основних операцій над матрицями. Матриця отримана в результаті операції віднімання, називається різницею матриць.
Опис алгоритму
Різниця матриць A та B:
Віднімання двох матриць можна виконати тільки у випадку, якщо матриці мають однаковий розмір.
Реалізація алгоритму
using System;
// клас з методами розширення
static class MatrixExt
{
// метод розширення для отримання кількості рядків матриці
public static int RowsCount(this int[,] matrix)
{
return matrix.GetLength(0);
}
// метод розширення для отримання кількості стовпців матриці
public static int ColumnsCount(this int[,] matrix)
{
return matrix.GetLength(1);
}
}
class Program
{
// метод для отримання матриці з консолі
static int[,] GetMatrixFromConsole(string name)
{
Console.Write("Кількість рядків матриці {0}: ", name);
var n = int.Parse(Console.ReadLine());
Console.Write("Кількість стовпців матриці {0}: ", name);
var m = int.Parse(Console.ReadLine());
var matrix = new int[n, m];
for (var i = 0; i < n; i++)
{
for (var j = 0; j < m; j++)
{
Console.Write("{0}[{1},{2}] = ", name, i, j);
matrix[i, j] = int.Parse(Console.ReadLine());
}
}
return matrix;
}
// метод для виводу матриці на екран консольного додатку
static void PrintMatrix(int[,] matrix)
{
for (var i = 0; i < matrix.RowsCount(); i++)
{
for (var j = 0; j < matrix.ColumnsCount(); j++)
{
Console.Write(matrix[i, j].ToString().PadLeft(4));
}
Console.WriteLine();
}
}
// метод для віднімання матриць
static int[,] MatrixSubstract(int[,] matrixA, int[,] matrixB)
{
if (matrixA.ColumnsCount() != matrixB.RowsCount())
{
throw new Exception("Для матриць різного розміру віднімання не можливе!");
}
var matrixC = new int[matrixA.RowsCount(), matrixB.ColumnsCount()];
for (var i = 0; i < matrixA.RowsCount(); i++)
{
for (var j = 0; j < matrixB.ColumnsCount(); j++)
{
matrixC[i, j] = matrixA[i, j] - matrixB[i, j];
}
}
return matrixC;
}
static void Main(string[] args)
{
Console.WriteLine("Програма для знаходження різниці двох матриць");
var a = GetMatrixFromConsole("A");
var b = GetMatrixFromConsole("B");
Console.WriteLine("Матриця A:");
PrintMatrix(a);
Console.WriteLine("Матриця B:");
PrintMatrix(b);
var result = MatrixSubstract(a, b);
Console.WriteLine("Різниця матриць:");
PrintMatrix(result);
Console.ReadLine();
}
}