Программирование на языке C#


{ { 1, 2, 3 }, { 4, 5, 6 } }


Download 1.19 Mb.
Pdf ko'rish
bet35/66
Sana23.10.2023
Hajmi1.19 Mb.
#1717181
1   ...   31   32   33   34   35   36   37   38   ...   66
Bog'liq
Программирование на языке C#

{ { 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 



Download 1.19 Mb.

Do'stlaringiz bilan baham:
1   ...   31   32   33   34   35   36   37   38   ...   66




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling