Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Инициализация многомерных массивов




Для инициализации многомерного массива достаточно заключить в фигурные скобки список инициализаторов каждого его размера. Ниже в качестве примера при­ведена общая форма инициализации двумерного массива:

тип [,] имя_массива = {

{ val, val, val,..., val },

{ val, val, val,..., val },

.

.

.

{ val, val, val,..., val }

};

где val обозначает инициализирующее значение, а каждый внутренний блок - от­дельный ряд. Первое значение в каждом ряду сохраняется на первой позиции в мас­сиве, второе значение - на второй позиции и т.д. Обратите внимание на то, что блоки инициализаторов разделяются запятыми, а после завершающей эти блоки закрываю­щей фигурной скобки ставится точка с запятой.

В качестве примера ниже приведена программа, в которой двумерный массив sqrs инициализируется числами от 1 до 10 и квадратами этих чисел.

Листинг 7.7

// Инициализировать двумерный массив.

 

using System;

 

class Squares

{

static void Main()

{

int[,] sqrs = {

{ 1, 1 },

{ 2, 4 },

{ 3, 9 },

{ 4, 16 },

{ 5, 25 },

{ 6, 36 },

{ 7, 49 },

{ 8, 64 },

{ 9, 81 },

{ 10, 100 }

};

int i, j;

 

for(i=0; i < 10; i++) {

for(j=0; j < 2; j++)

Console.Write(sqrs[i,j] + " ");

Console.WriteLine();

}

}

}

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

1 1

2 4

3 9

4 16

5 25

6 36

7 49

8 64

9 81

10 100

Ступенчатые массивы

В приведенных выше примерах применения двумерного массива, по существу, соз­давался так называемый прямоугольный массив. Двумерный массив можно представить в виде таблицы, в которой длина каждой строки остается неизменной по всему масси­ву. Но в C# можно также создавать специальный тип двумерного массива, называемый ступенчатым массивом. Ступенчатый массив представляет собой массив массивов, в ко­тором длина каждого массива может быть разной. Следовательно, ступенчатый массив может быть использован для составления таблицы из строк разной длины.

Ступенчатые массивы объявляются с помощью ряда квадратных скобок, в которых указывается их размерность. Например, для объявления двумерного ступенчатого мас­сива служит следующая общая форма:

тип [][] имя_массива = new тип [ размер ][];

где размер обозначает число строк в массиве. Память для самих строк распределяется индивидуально, и поэтому длина строк может быть разной. Например, в приведенном ниже фрагменте кода объявляется ступенчатый массив jagged. Память сначала рас­пределяется для его первого измерения автоматически, а затем для второго измерения вручную.

int[][] jagged = new int[3][];

jagged[0] = new int[4];

jagged[1] = new int[3];

jagged[2] = new int[5];

После выполнения этого фрагмента кода массив jagged выглядит так, как показа­но ниже.

Теперь нетрудно понять, почему такие массивы называются ступенчатыми! После создания ступенчатого массива доступ к его элементам осуществляется по индексу, указываемому в отдельных квадратных скобках. Например, в следующей строке кода элементу массива jagged, находящемуся на позиции с координатами (2,1), присваи­вается значение 10.

jagged[2][1] = 10;

Обратите внимание на синтаксические отличия в доступе к элементу ступенчатого и прямоугольного массива.

В приведенном ниже примере программы демонстрируется создание двумерного ступенчатого массива.

Листинг 7.8

// Продемонстрировать применение ступенчатого массива.

 

using System;

 

class Jagged

{

static void Main()

{

int[][] jagged = new int[3][];

jagged[0] = new int[4];

jagged[1] = new int[3];

jagged[2] = new int[5];

 

int i;

 

// Сохранить значения в первом массиве.

for(i=0; i < 4; i++)

jagged[0][i] = i;

 

// Сохранить значения во втором массиве.

for(i=0; i < 3; i++)

jagged[1][i] = i;

 

// Сохранить значения в третьем массиве.

for(i=0; i < 5; i++)

jagged[2][i] = i;

 

 

// Вывести значения из первого массива.

for(i=0; i < 4; i++)

Console.Write(jagged[0][i] + " ");

 

Console.WriteLine();

 

// Вывести значения из второго массива.

for(i=0; i < 3; i++)

Console.Write(jagged[1][i] + " ");

 

Console.WriteLine();

 

// Вывести значения из третьего массива.

for(i=0; i < 5; i++)

Console.Write(jagged[2][i] + " ");

 

Console.WriteLine();

}

}

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

0 1 2 3

0 1 2

0 1 2 3 4

Ступенчатые массивы находят полезное применение не во всех, а лишь в некоторых случаях. Так, если требуется очень длинный двумерный массив, который заполняется не полностью, т.е. такой массив, в котором используются не все, а лишь отдельные его элементы, то для этой цели идеально подходит ступенчатый массив.

И последнее замечание: ступенчатые массивы представляют собой массивы масси­вов, и поэтому они не обязательно должны состоять из одномерных массивов. Напри­мер, в приведенной ниже строке кода создается массив двумерных массивов.

int[][,] jagged = new int[3][,];

В следующей строке кода элементу массива jagged[0] присваивается ссылка на массив размерами 4´2.

jagged[0] = new int[4,2];

А в приведенной ниже строке кода элементу массива jagged[0][1,0] присваива­ется значение переменной i.

jagged[0][1,0] = i;





Поделиться с друзьями:


Дата добавления: 2017-02-25; Мы поможем в написании ваших работ!; просмотров: 618 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Человек, которым вам суждено стать – это только тот человек, которым вы сами решите стать. © Ральф Уолдо Эмерсон
==> читать все изречения...

2308 - | 2158 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.