using
System;
using
System.Threading.Tasks;
class
MatrixAdditionSubtraction
{
const
int
MAX = 4;
static
int
[,] matA =
new
int
[MAX, MAX] { { 3, 7, 3, 6 }, { 9, 2, 0, 3 }, { 0, 2, 1, 7 }, { 2, 2, 7, 9 } };
static
int
[,] matB =
new
int
[MAX, MAX] { { 6, 5, 5, 2 }, { 1, 7, 9, 6 }, { 6, 6, 8, 9 }, { 0, 3, 5, 2 } };
static
int
[,] matAdd =
new
int
[MAX, MAX];
static
int
[,] matSub =
new
int
[MAX, MAX];
static
void
PrintMatrix(
int
[,] mat)
{
for
(
int
i = 0; i < MAX; i++)
{
for
(
int
j = 0; j < MAX; j++)
{
Console.Write(mat[i, j] +
" "
);
}
Console.WriteLine();
}
Console.WriteLine();
}
static
void
Subtract(
int
i)
{
int
start = i * (MAX / 4);
int
end = (i + 1) * (MAX / 4);
for
(
int
j = start; j < end; j++)
{
for
(
int
k = 0; k < MAX; k++)
{
matSub[j, k] = matA[j, k] - matB[j, k];
}
}
}
static
void
Add(
int
i)
{
int
start = i * (MAX / 4);
int
end = (i + 1) * (MAX / 4);
for
(
int
j = start; j < end; j++)
{
for
(
int
k = 0; k < MAX; k++)
{
matAdd[j, k] = matA[j, k] + matB[j, k];
}
}
}
static
void
Main(
string
[] args)
{
Console.WriteLine(
"Matrix A:"
);
PrintMatrix(matA);
Console.WriteLine(
"Matrix B:"
);
PrintMatrix(matB);
Parallel.For(0, 4, i =>
{
Subtract(i);
Add(i);
});
Console.WriteLine(
"Sum of Matrix A and B:"
);
PrintMatrix(matAdd);
Console.WriteLine(
"Subtraction of Matrix A and B:"
);
PrintMatrix(matSub);
}
}