Страница 73 из 502
<b> Console.WriteLine();</b>
<b> }</b>
<b> }</b>
<b>}</b>
В данном примере элемент массива table[ 0, 0 ] будет иметь значение 1, элемент массива table[0,1] — значение 2, элемент массива table[0,2] — значение 3 и т.д. А значение элемента массива table[2,3] окажется равным 12. На рис. 7.1 показано схематически расположение элементов этого массива и их значений.
Рис. 7.1. Схематическое представление массива table, созданного в программе TwoD
------------------------------------------
СОВЕТ
Если вам приходилось раньше программировать на С, C++ или Java, то будьте особенно внимательны, объявляя или организуя доступ к многомерным массивам в С#. В этих языках программирования размеры массива и индексы указываются в отдельных квадратных скобках, тогда как в C# они разделяются запятой.
------------------------------------------
В C# допускаются массивы трех и более измерений. Ниже приведена общая форма объявления многомерного массива.
<b><i>тип[,</i> . . ., ] <i>имя_массива</i> = new <i>тип[размер1, размер2,</i> . . . <i>размеры]</i> ;</b>
Например, в приведенном ниже объявлении создается трехмерный целочисленный массив размерами 4x10хЗ.
<b>int[,,] multidim = new int[4, 10, 3];</b>
А в следующем операторе элементу массива multidim с координатами местоположения (2,4,1) присваивается значение 100.
<b>multidim[2, 4, 1] = 100;</b>
Ниже приведен пример программы, в которой сначала организуется трехмерный массив, содержащий матрицу значений 3х3x3, а затем значения элементов этого массива суммируются по одной из диагоналей матрицы.
<b>// Суммировать значения по одной из диагоналей матрицы 3x3x3.</b>
<b>using System;</b>
<b>class ThreeDMatrix { </b>
<b> static void Main() {</b>
<b> int[,,] m = new int[3, 3, 3]; </b>
<b> int sum = 0; </b>
<b> int n = 1;</b>
<b> for(int x=0; x < 3; x++) </b>
<b> for(int y=0; y < 3; y++) </b>
<b> for(int z=0; z < 3; z++) </b>
<b> m[x, y, z] = n++;</b>
<b> sum = m[0, 0, 0] + m[1, 1, 1] + m[2, 2, 2];</b>
<b> Console.WriteLine("Сумма значений по первой диагонали: " + sum);</b>
<b> }</b>
<b>}</b>
Вот какой результат дает выполнение этой программы.
<b>Сумма значений по первой диагонали: 42</b>
Для инициализации многомерного массива достаточно заключить в фигурные скобки список инициализаторов каждого его размера. Ниже в качестве примера приведена общая форма инициализации двумерного массива:
<b><i>тип[,] имя_массив а</i> = {</b>
<b><i>{val, val, val</i> ..., <i>val},</i></b>
<b><i>{val, val, val,..., val},</i></b>
<b><i>{val, val, val,</i>..., <i>val}</i></b>
<b>};</b>
где val обозначает инициализирующее значение, а каждый внутренний блок — отдельный ряд. Первое значение в каждом ряду сохраняется на первой позиции в массиве, второе значение — на второй позиции и т.д. Обратите внимание на то, что блоки инициализаторов разделяются запятыми, а после завершающей эти блоки закрывающей фигурной скобки ставится точка с запятой.
В качестве примера ниже приведена программа, в которой двумерный массив sqrs инициализируется числами от 1 до 10 и квадратами этих чисел.
<b>// Инициализировать двумерный массив, using System;</b>
<b>using System; </b>
<b>class Squares { </b>
<b> static void Main() { </b>
<b> int[,] sqrs = { </b>
<b> { 1, 1 }, </b>
<b> { 2, 4 }, </b>
<b> { 3, 9 }, </b>
<b> { 4, 16 }, </b>
<b> { 5, 25 }, </b>
<b> { 6, 36 }, </b>
<b> { 7, 49 }, </b>
<b> { 8, 64 }, </b>
<b> { 9, 81 }, </b>
<b> { 10, 100 } </b>
<b> }; </b>
<b> int i, j; </b>
<b> for(i=0; i < 10; i++) { </b>
<b> for(j=0; j < 2; j++) </b>
<b> Console.Write(sqrs[i,j] + " "); </b>
<b> Console.WriteLine(); </b>
<b> } </b>
<b> }</b>
<b>} </b>
При выполнении этой программы получается следующий результат.