Как узнать, присутствует ли элемент в ТРЕХМЕРНОМ массиве (C#)

Рейтинг: 1Ответов: 1Опубликовано: 03.06.2023

Нужно заполнить массив рандомными двузначными числами, но перед этим проверить, есть ли уже такое число в массиве. Не нашла ни одного способа, чтобы проверить наличие элемента в трехмерном массиве.

Console.Write("Введите количество строк массива: ");
int rows = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите количество колонок массива: ");
int cols = Convert.ToInt32(Console.ReadLine()); 
Console.Write("Введите глубину массива: ");
int deapth = Convert.ToInt32(Console.ReadLine()); 

int[,,] matrix_3D = new int[rows, cols, deapth];

fillAndPrintMatrix(matrix_3D);

void fillAndPrintMatrix(int[,,] matrix_3D){
    for(int i = 0; i < matrix_3D.GetLength(0); i+=1){
        for(int j = 0; j < matrix_3D.GetLength(1); j+=1){
            for(int k = 0; k < matrix_3D.GetLength(2); k+=1){
                Random rnd = new Random();
                int num = rnd.Next(10, 100);
                matrix_3D[i,j,k] = num;
                Console.WriteLine($"{matrix_3D[i,j,k]}({i},{j},{k})");
                
            }
        }
    }
}

Ответы

▲ 0

Первый способ - проверяете наличие при обходе такими же тремя циклами, как у вас сделано. Разве что можно ограничить верхний предел по внешнему циклу текущим индексом.

Второй способ - заносить значения во множество/словарь/мап и проверять наличие там.

Самый лучший способ - не допускать дубликатов. Для этого занесите все нужные числа в массив (у вас их всего 90), сделайте случайное перемешивание, и заберите сколько нужно первых (или последних). Случайное перемешивание - shuffle