Как узнать, присутствует ли элемент в ТРЕХМЕРНОМ массиве (C#)
Нужно заполнить массив рандомными двузначными числами, но перед этим проверить, есть ли уже такое число в массиве. Не нашла ни одного способа, чтобы проверить наличие элемента в трехмерном массиве.
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})");
}
}
}
}
Ответы (1 шт):
Первый способ - проверяете наличие при обходе такими же тремя циклами, как у вас сделано. Разве что можно ограничить верхний предел по внешнему циклу текущим индексом.
Второй способ - заносить значения во множество/словарь/мап и проверять наличие там.
Самый лучший способ - не допускать дубликатов. Для этого занесите все нужные числа в массив (у вас их всего 90), сделайте случайное перемешивание, и заберите сколько нужно первых (или последних). Случайное перемешивание - shuffle