Добавить в цитаты Настройки чтения

Страница 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 &lt; 3; x++) </b>

<b>      for(int y=0; y &lt; 3; y++) </b>

<b>        for(int z=0; z &lt; 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(&quot;Сумма значений по первой диагонали: &quot; + 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 &lt; 10; i++) {  </b>

<b>      for(j=0; j &lt; 2; j++)  </b>

<b>        Console.Write(sqrs[i,j] + &quot; &quot;);   </b>

<b>      Console.WriteLine();  </b>

<b>    }  </b>

<b>  }</b>

<b>}  </b>

При выполнении этой программы получается следующий результат.