Как вводить и выводить значения в массиве [] [,] и [,] [] (сочетание зубчатого массива и многомерного массива) - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь улучшить свой код для поиска элементов в моем многомерном массиве, потому что я хочу избежать возможных проблем с производительностью в будущем, когда я увеличу объем данных. Я новичок в программировании, поэтому есть много вещей, которые я не знаю. Я много искал по темам многомерный массив, зубчатые массивы, сортировку. Я думаю, что мне нужно использовать неровный массив, потому что мне нужно отсортировать, чтобы найти третий по величине и 6. самый большой номер. Но я понимаю, что мне нужно попросить некоторую помощь в примерах или ссылку на дополнительную информацию, потому что у меня возникают проблемы с прогрессом в определении моего зубчатого массива. Я постараюсь выделить каждую проблему, потому что застрял в вещах, которые, как мне кажется, могут быть простыми для людей, которые более знакомы с массивами, чем я. Должна быть возможность смешивать неровные и многомерные массивы в соответствии с неровными массивами

Вот пример [] [], который работает

using System;
using System.Collections;
namespace SortJaggedArray
{
class host
{
    [STAThread]
    static void Main(string[] args)
    {
        int[][] arr = new int[2][];
        arr[0] = new int[3] {1,5,3};
        arr[1] = new int[4] {4,2,8,6};

        // Write out a header for the output.
        Console.WriteLine("Array - Unsorted\n");

        for (int i = 0; i < arr.Length; i++)
        {
             System.Console.WriteLine("Outer array " + i);

             for (int j = 0; j < arr[i].Length; j++)
             {
                  System.Console.Write(arr[i][j] + " ");
             }
             System.Console.WriteLine(" ");
             System.Console.WriteLine(" ");
        }
        Console.ReadLine();
    }
}
}

//Output:
//Outer array 0
//1 5 3

//Outer array 1
//4 2 8 6

Вот мой пример [] [,], где ввод работает, но я борюсь с тем, как записать вывод:

using System;
using System.Collections;
namespace SortJaggedArray
{
    class host
    {
        [STAThread]
        static void Main(string[] args)
        {
            int[][,] arr = new int[2][,]
            {
                new int[,] { { 1, 3 }, { 5, 2 }, { 3, 9 } },
                new int[,] { { 4, 1 }, { 2, 7 }, { 8, 5 }, { 6, 3 } }
            };
            // Write out a header for the output.
            Console.WriteLine("Array - Unsorted\n");

            foreach (int i in arr)
                Console.WriteLine(i);

            Console.ReadLine();
        }
    }
}

Wanted output:
Nr 0: 
1, 3
5, 2
3, 9

Nr 1:
4, 1
2, 7
8, 5
6, 3

Вопрос 1: Как написать WriteLine / for / foreach для просмотра содержимого зубчатого массива [] [,]?

Вопрос 2: Я хочу изменить это на [,] [], но тогда у меня возникают проблемы с тем, как вводить / выводить данные в таком зубчатом массиве. Как вводить данные? Как написать / для / forearch, чтобы увидеть содержимое зубчатого массива [,] []?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Если у других читателей возникнут те же вопросы, я хочу добавить пример кода о том, как пример Magnetron также помог мне решить ту же проблему для массива [,] []

using System;
using System.Collections;
namespace SortJaggedArray
{
    class host
    {
        [STAThread]
        static void Main(string[] args)
        {
            int[,][] arr = new int[2,3][];
            arr[0,0] = new int[3] { 1, 5, 3 };
            arr[0,1] = new int[4] { 4, 2, 8, 6 };
            arr[0,2] = new int[2] { 2, 8 };
            arr[1,0] = new int[2] { 7, 5 };
            arr[1,1] = new int[5] { 8, 7, 5, 9, 2 };
            arr[1,2] = new int[2] { 1, 4};

            // Write out a header for the output.
            Console.WriteLine("Array - Unsorted\n");

            for (int i = 0; i < arr.GetLength(0); i++)
            {
                Console.WriteLine($"Nr {i}:");
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    for (int k = 0; k < arr[i,j].Length; k++)
                    {
                        Console.Write($"{arr[i,j][k]} ");
                    }
                    Console.WriteLine();
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}

//Output:
//Nr 0:
//1 5 3
//4 2 8 6
//2 8

//Nr 1:
//7 5
//8 7 5 9 2
//1 4
0 голосов
/ 11 марта 2019

Вам необходимо выполнить итерацию по каждому измерению:

for(int i=0; i<arr.Length; i++){
    Console.WriteLine($"Nr {i}:");
    for(int j=0;j<arr[i].GetLength(0);j++){
        for(int k=0;k<arr[i].GetLength(1);k++){
            Console.Write($"{arr[i][j,k]} ");
        }
        Console.WriteLine();
    }
    Console.WriteLine();
}

Выходы:

Nr 0:
1 3 
5 2 
3 9 

Nr 1:
4 1 
2 7 
8 5 
6 3 
...