Как объединить 2 матрицы в 1?
Console.Write("Введите информационную комбинацию: ");
string alpha = Console.ReadLine();
Console.WriteLine("Информ.комбинация = " + alpha);
int k = alpha.Length;
Console.WriteLine("Число информационных разрядов = {0}", k);
double r = Math.Ceiling(Math.Log(k + 1 + Math.Log(k + 1, 2), 2));
Console.WriteLine("Число корректирующих разрядов = {0}", r);
int n = Convert.ToInt32(k + r);
Console.WriteLine("Число разрядов закодированной кодовой комбинации = {0}", n);
byte[,] A = new byte[Convert.ToInt32(r), k];
//Random rnd = new Random();
for (int i = 0; i < r; i++)
{
for (int j = 0; j < k; j++)
{
//A[i, j] = rnd.Next(0, 1);
Console.Write("Введите число: " + "\t");
A[i, j] = byte.Parse(Console.ReadLine());
}
Console.WriteLine();
}
Console.WriteLine("Матрица A[r,k] = ");
for (int i = 0; i < r; i++)
{
for (int j = 0; j < k; j++)
{
Console.Write("{0}", A[i, j]);
}
Console.WriteLine();
}
byte[,] E = new byte[Convert.ToInt32(r), Convert.ToInt32(r)];
for (int i = 0; i < r; i++)
{
for (int j = 0; j < r; j++)
{
if (i == j)
{
E[i, j] = 1;
}
else
{
E[i, j] = 0;
}
}
}
Console.WriteLine("Матрица E[r,r] = ");
for (int i = 0; i < r; i++)
{
for (int j = 0; j < r; j++)
{
Console.Write(E[i, j].ToString() + " ");
}
Console.WriteLine();
}
Необходимо, чтобы значения 2 матриц объединились в 1 общую.Общая матрица должна иметь размерность r*n.
Мне необходимо, чтобы значения одной матрицы соединились со значениями другой матрицы.

Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Предположим, что матрицы одинаковой высоты.
private byte[,] MergeRight(byte[,] left, byte[,] right)
{
int leftWidth = left.GetLength(1);
int width = leftWidth + right.GetLength(1);
int height = left.GetLength(0);
byte[,] result = new byte[height, width];
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
if (j < leftWidth)
result[i, j] = left[i, j];
else
result[i, j] = right[i, j - leftWidth];
}
}
}
byte[,] merged = MergeRight(A, E);
Начинайте разбивать код на методы, у вас куча повторяющегося без причины кода.
