Программирование на языке C#
{ { 1, 2, 3 }, { 4, 5, 6 } }
Download 1.19 Mb. Pdf ko'rish
|
Программирование на языке C#
- Bu sahifa navigatsiya:
- Работа с двумерными массивами
{ { 1, 2, 3 }, { 4, 5, 6 } },
{ { 7, 8, 9 }, { 1, 2, 3 } } }; 2) Объявление трехмерного массива с заданием количества элементов для каждой размерности. 53 int[, ,] Mx3 = new int[2,2,3]{ { { 1,2,3 }, { 4, 5, 6 } }, { { 7,8,9 }, { 1, 2, 3 } } }; Доступ к элементам многомерных массивов Доступ к элементам осуществляется, так же, как и в случае одномерного массива, с помощью спецификатора размерности с указанием допустимого номера ячейки (индекса) для каждого измерения. Например, для доступа к элементам массива Mx2 , состоящего из n*m элементов, int[,]Mx2 = new int[n,m] необходимо указать два индекса Mx2[i,j] при этом 0<=i В случае трехмерного массива Mx3 , int[,] Mx3 = new int[n,m,l] состоящий из n*m*l элементов. Для обращения к каждому элементу такого массива необходимо указать три индекса: Mx3[i,j,k] , при этом 0<=i Заметим, что количество измерений в массиве может быть достаточным большим для решения любых практических задач, но зачастую, на практике используются двумерные массивы. Работа с двумерными массивами Для обработки данных, хранящихся в многомерных массивах, необходимо использовать вложенные циклы. Причем, количество циклов, в случае обработки всех элементов, совпадает с количеством размерности массива. Рассмотрим вариант организации вложенных циклов для многомерных массивов на примере заполнения случайными числами двумерного и трехмерного массивов. Для двумерного массива array2D необходимо организовать двойной цикл, внешний (первый) цикл обеспечивает перебор строк, во втором (вложенный цикл) – перебор столбцов (листинг 7) int row=4,column=2; int[,] array2D = new int[row, column]; Random Rnd = new Random(); for(int i = 0; i < row; i++){ for (int j = 0; j < column; j++){ array2D [i,j] = Rnd.Next (10, 234); } } Листинг 7. 54 В этом примере (листинг 7) создается матрица с количеством строк row = 4 и количеством column = 3 столбцов. В первом цикле, с помощью рабочего индекса i , выполняется перебор строк, а вложенный цикл выполняет перебор столбцов для заданного значения i , с помощью рабочего индекса j . Другими словами, на i- ой итерации будут просматриваться элементы матрицы с номерами, (i,0) , (i,1) , (i,2) , т. е. просмотр элементов выполняется по строкам. В следующем примере изменим порядок просмотра элементов, по столбцам. Для этого внесем изменения в предыдущий код, т. е. в первом цикле, с помощью рабочего индекса j выполняется перебор столбцов, а вложенный цикл выполняет перебор строк с помощью рабочего индекса i для заданного значения j . Другими словами, на j - ой итерации будут просматриваться элементы матрицы с номерами (0,j) , (1,j) , (2,j) , (3,j) ( листинг 8). int row=4,column=3; int[,] array2D = new int[row, column]; Random Rnd = new Random(); for(int j = 0; j < column; j++){ for(int i=0;i < row; i++){ array2D [i,j] = Rnd.Next (10, 234); } } Листинг 8. В трехмерном массиве просмотр элементов реализуется в три цикла, два из которых являются вложенными. Рассмотрим соответствующий пример кода, представленный в листинге 9. int d1 = 3, d2 = 3, d3 = 3; int[, ,] array3D = new int[d1, d2, d3]; Random Rnd = new Random(); for(int i=0;i < d1; i++){ for(int j = 0; j < d2; j++){ for(int k = 0; k < d3; k++){ array3D [i,j,k] = Rnd.Next (10, 234); } } } Листинг 9. 55 |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling