Преобразовать вектор в двумерный массив - C#
Формулировка задачи:
Есть вектор 1,2,3,4,5,6,7,8,9,10,11,12
Представление в массиве
1 2 3 4
5 6 7 8
9 10 11 12
И к примеру зная номер элемента в векторе получить координаты 6->(1,1); 9->(0,3)
Ширина и высота массива известна.
Решение задачи: «Преобразовать вектор в двумерный массив»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
int[] arr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
int width = 4;
int height = 3;
if (width * height != arr.Length)
throw new Exception("Несоответствие размерностей");
int[,] dimArr = new int[height, width];
// Заполнение двумерного массива.
for (int i = 0; i < height; ++i)
{
for (int j = 0; j < width; ++j)
{
dimArr[i, j] = arr[i*width+j];
}
}
// Вывод элементов двумерного массива.
for (int i = 0; i < height; ++i)
{
for (int j = 0; j < width; ++j)
{
Console.Write(dimArr[i, j] + " ");
}
Console.WriteLine();
}
// Восстановление по координате вектора.
int pos = 7;
int row = pos / width;
int col = pos % width;
Console.WriteLine("Row = {0}, Col = {1}, el = {2}", row, col, dimArr[row, col]);
}
}