- •Глава 9. Многомерные массивы
- •9.1 Прямоугольные массивы
- •9.1.1 Объявления и инициализация
- •9.1.2 Примеры
- •9.2 Ступенчатые массивы
- •9.2.1 Объявления и инициализация
- •9.2.2 Примеры
- •9.3 Оператор цикла с перебором foreach
- •9.4 Массивы с числом размерностей больше двух
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
- •Глава 10. Исключительные ситуации
- •10.1 Основные понятия
- •10.2 Механизм обработки исключений
- •10.3 Примеры обработки исключений
- •10.4 Оператор throw
- •10.5 Дополнительные сведения
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
- •Глава 11. Обработка текстовой информации
- •11.1 Символьный тип char
- •11.2 Массив символов
- •11.3 Тип String
- •11.4 Класс StringBuilder
- •11.5 Форматирование строк
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
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столбцов.
Для перебора всех элементов массива потребовались три вложенных друг в друга цикла, каждый по своему измерению: вначале номер страницы, затем строки и, наконец, столбца.
Результаты работы программы:
Контрольные вопросы
Дайте определение понятию прямоугольного массива.
Сколько индексов определяют позицию любого элемента в двумерном массиве?
Какая конструкция используется для того, чтобы получить доступ к элементу двумерного массива?
Приведите различные варианты объявления двумерного массива.
Приведите формат инициализации двумерного массива.
В каком случае присутствует избыточное описание массива?
Приведите пример инициализации целочисленного двумерного массива.
Приведите пример ввода двумерного массива и вывода его в матричной форме.
Приведите пример алгоритма и программы обработки двумерного массива.
Дайте понятие ступенчатого массива. Приведите пример объявления ступенчатого массива.
Приведите формат инициализации ступенчатого массива.
Приведите пример алгоритма и программы обработки ступенчатого массива.
Когда целесообразно использовать цикл перебора foreach? Приведите пример.
Приведите пример объявления и инициализации трехмерного массива.
Приведите пример алгоритма и программы обработки трехмерного массива.