Добрый день. Осваиваю язык C#. Задача в следующем. Как скопировать последовательно элементы двумерного массива размером 5*5 в два массива размером 5*2 и 5*3 . Используя только цикл for и if.
Буду весьма благодарен)
Начал с создания трех массивов:
int[,] arr1 = new int[5, 5];
int[,] arr2 = new int[5, 2];
int[,] arr3 = new int[5, 5];
далее, создал цикл в цикле, так как это двумерный массив:
for (int i = 0; i < arr1.Length; i++)
{
for (int k = 0; k < arr1.Length; k++)
{
arr2[i, k] = arr1[i, k];
arr3[i, k] = arr1[i, k+2];
}
}
Console.WriteLine(arr3);
А вот саму тонкость вывода, нащупать не могу
Array.Length возвращает:
Общее число элементов во всех измерениях массива
Сомневаюсь, что именно это вам нужно. Храните размерности массива в константах/переменных или воспользуйтесь методом Array.GetLength(int dimension)
Так как все массивы имеют разные размерности, сомневаюсь что можно реализовать задуманное внутри одного и того же цикла. Подумайте об этом.
Console.WriteLine(...) не умеет выводить кастомные типы и не обязан уметь, он просто вызовет метод .ToString() на переданном объекте. Сомневаюсь, что это именно то что вам нужно. Организуйте вывод в цикле, добавляя вручную в нужных местах вывод разделителей между элементами в строке и переводы строк между строками элементов.
Заработало) вот как выглядит) Спасибо кто помог.
int[,] arr = new int[5, 5]
{
{ 1, 4, 5, 5, 5 },
{ 4, 4, 4, 4, 4 },
{ 3, 6, 3, 1, 6 },
{ 1, 4, 7, 9, 9 },
{ 4, 5, 5, 5, 5 }
};
int[,] arr1 = new int[5, 2];
int[,] arr2 = new int[5, 3];
for (int i = 0; i< 5; i++)
{
for (int j = 0; j< 2; j++)
{
arr1[i, j] = arr[i, j];
Console.Write(arr1[i, j]);
}
Console.WriteLine();
}
for (int i1 = 0; i1< 5; i1++)
{
for (int j1 = 0; j1< 3; j1++)
{
arr2[i1, j1] = arr[i1, j1 + 2];
Console.Write(arr2[i1, j1]);
}
Console.WriteLine();
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей