Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Малыхина. Массивы....doc
Скачиваний:
22
Добавлен:
22.05.2015
Размер:
502.27 Кб
Скачать

9.4 Массивы с числом размерностей больше двух

В данной главе были подробно рассмотрены основные аспекты работы с двумерными массивами. Параллельно были показаны отличия этих аспектов от тех, которые применимы к обработке одномерных массивов. Следует отметить, что потребности различных направлений инженерной и научной мыслей не исчерпываются использованием только рассмотренных типов массивов. Можно привести много практических и теоретических задач, предполагающих применение массивов более высоких размерностей.

В С# разрешено использование массивов, имеющих более двух размерностей. Общая форма объявления многомерного массива:

тип[,…,] имя = new тип [ разм1,… размN];

Например, трехмерный массив может быть объявлен следующим образом:

int [,,] b = new int[5,4,3];

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

b [2,1,2]

Многомерный массив можно инициализировать, заключив список инициализаторов для каждой размерности в фигурные скобки.

Для иллюстрации сказанного ниже приведена программа (лист. 6) поиска наибольшего элемента в трехмерном массиве.

Листинг 6 - Поиск наибольшего элемента в трехмерном массиве

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

const int m = 3, n = 4, c=2;

int[,,] y = new int[c,m, n] {{

{ 2, 2, 8, 9 },

{ 4, 5, 6, 2 },

{ 7, 0, 1, 1 }},

{

{ 1, 1, 0, 1 },

{ 4, 5, 6, 2 },

{ 7, 0, 1, 1 }}};

Console.WriteLine("Исходный массив:");

for (int k = 0; k < c; ++k)

{

for (int i = 0; i < m; ++i)

{

for (int j = 0; j < n; ++j)

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

Console.WriteLine();

}

}

int max = y[0, 0, 0];

for (int k = 0; k < c; ++k)

{

for (int i = 0; i < m; ++i)

{

for (int j = 0; j < n; ++j)

if (y[k, i, j] > max) max = y[k, i, j];

}

}

Console.WriteLine("Наибольший элемент в матрице " + max);

}

}

}

В инициализирующей части объявления трехмерного массива упредставлены первая и вторая его страницы (размерностьк), каждая из которых содержитmстрок иnстолбцов.

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

Результаты работы программы:

Контрольные вопросы

  1. Дайте определение понятию прямоугольного массива.

  2. Сколько индексов определяют позицию любого элемента в двумерном массиве?

  3. Какая конструкция используется для того, чтобы получить доступ к элементу двумерного массива?

  4. Приведите различные варианты объявления двумерного массива.

  5. Приведите формат инициализации двумерного массива.

  6. В каком случае присутствует избыточное описание массива?

  7. Приведите пример инициализации целочисленного двумерного массива.

  8. Приведите пример ввода двумерного массива и вывода его в матричной форме.

  9. Приведите пример алгоритма и программы обработки двумерного массива.

  10. Дайте понятие ступенчатого массива. Приведите пример объявления ступенчатого массива.

  11. Приведите формат инициализации ступенчатого массива.

  12. Приведите пример алгоритма и программы обработки ступенчатого массива.

  13. Когда целесообразно использовать цикл перебора foreach? Приведите пример.

  14. Приведите пример объявления и инициализации трехмерного массива.

  15. Приведите пример алгоритма и программы обработки трехмерного массива.