@russrage
Я

Правильна ли логика копирования массива?

Задание создать двумерный массив с 3 строками и 5 столбцами, потом значения перенести в новый массив с 5 столбцам и 3 строками.

Сам код:

using System;

class TwoArray
{
    static void Main()
    {
        int[,] numbs = new int[3, 5];
        Random rand = new Random();

        int[] numb = new int[numbs.Length];

        for (int i = 0, z = 0; i < numbs.GetLength(0); i++)
        {
            for (int j = 0; j < numbs.GetLength(1); j++, z++)
            {
                numbs[i, j] = rand.Next(0, 100);
                Console.Write(numbs[i, j] + " ");
                numb[z] = numbs[i, j];
            }
            Console.WriteLine();
        }
        Console.WriteLine();

        int[,] numbs2 = new int[5, 3];

        for (int i = 0, z = 0; i < numbs2.GetLength(0); i++)
        {
            for (int j = 0; j < numbs2.GetLength(1); j++, z++)
            {
                numbs2[i, j] = numb[z];
                Console.Write(numbs2[i, j] + " ");
            }
            Console.WriteLine();
        }
        Console.ReadKey();
    }
}

Я сначала скопировал из первого двумерного массива в одномерный, потом из одномерного заполнил второй двумерный массив.
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 2
FoggyFinder
@FoggyFinder
Если вам нужно сохранить порядок элементов, то просто воспользуйтесь готовым методом Array.Copy:

Array.Copy(numbs, numbs2, numbs.Length);

В противном случае, можно использовать циклы.

for (int i = 0, z = 0; i < numbs2.GetLength(0); i++)
{
    for (int j = 0; j < numbs2.GetLength(1); j++)
    {
        numbs2[i, j] = numbs[j, i];
        Console.Write(numbs2[i, j] + " ");
    }
Console.WriteLine();
}
Ответ написан
@russrage Автор вопроса
Я
А если так:
using System;

class TwoArray
{
    static void Main()
    {
        int[,] numbs = new int[3, 5];
        Random rand = new Random();

        int[,] numbs2 = new int[5, 3];

        for (int i = 0, z = 0; i < numbs.GetLength(0); i++)
        {
            for (int j = 0; j < numbs.GetLength(1); j++, z++)
            {
                numbs[i, j] = rand.Next(0, 100);
                Console.Write(numbs[i, j] + " ");
            }
            Console.WriteLine();
        }
        Console.WriteLine();
        
        for (int i = 0; i < numbs2.GetLength(0); i++)
        {
            for (int j = 0; j < numbs2.GetLength(1); j++)
            {
                numbs2[i, j] = numbs[j, i];
                Console.Write(numbs2[i, j] + " ");
            }
            Console.WriteLine();
        }
        Console.ReadKey();
    }
}


То нет исключения((
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы