0

Как создавать двумерные и многомерные массивы?

Встроенный язык платформы 1С:Предприятие 8.3 позволяет создавать двумерные и многомерные массивы. По своей сути — это массивы массивов (ведь никто не запрещал задавать в качестве элементов массива другие массивы). Давайте на примерах разберемся, как создавать и работать с такими массивами.

Двумерный массив

Ниже приведен пример программного создания двумерного массива размером M строк на N столбцов:

М = 2;//количество строк
N = 3;//количество столбцов
//создаем основной массив
ММ = Новый Массив(M);
//элементы массива тоже массивы
ММ[0] = Новый Массив(N);
ММ[1] = Новый Массив(N);

Такой массив может хранить M * N элементов. В нашем случае это 6. Для программного обращения к элементам двумерного массива необходимо указывать имя массива, а также два индекса: первый — индекс строки, второй — индекс колонки:

ММ[0][0] = 0;
ММ[0][1] = 1;
ММ[0][2] = 2;
ММ[1][0] = 10;
ММ[1][1] = 11;
ММ[1][2] = 12;

Для программного перебора элементов двумерного массива нам понадобится двойной цикл: первый по элементам основного массива и второй цикл по элементам вложенного массива:

Для ИндМ = 0 По ММ.ВГраница() Цикл
	МассивМ = ММ[ИндМ];
	Для ИндН = 0 По МассивМ.ВГраница() Цикл
		Сообщить("ММ[" + ИндМ + "][" + ИндН + "] = " + ММ[ИндМ][ИндН]);
	КонецЦикла;
КонецЦикла;

Многомерный массив

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

M = 2;//количество строк
N = 3;//количество столбцов
L = 5;//глубина ячейки
//инициализация основного массива
MNL = Новый Массив(M);
Для ИндM = 0 По MNL.ВГраница() Цикл
	//иницаилизация вложенного массива уровня N
	MNL[ИндM] = Новый Массив(N);
	Для ИндN = 0 По MNL[ИндM].ВГраница() Цикл
		//инициализация вложенного массива уровня L
		MNL[ИндM][ИндN] = Новый Массив(L);
		Для ИндL = 0 По MNL[ИндM][ИндN].ВГраница() Цикл
			MNL[ИндM][ИндN][ИндL] = "" + ИндM + ИндN + ИндL;
		КонецЦикла;//ИндL
	КонецЦикла;//ИндN
КонецЦикла;//ИндM

Такой массив может хранить M * N * L элементов. В нашем случае это 30. Для программного обращения к элементам трехмерного массива необходимо указывать имя массива, а также три индекса: первый — индекс строки, второй — индекс колонки, третий — индекс глубины:

MNL[0][0][0] = 000
MNL[0][0][1] = 001
MNL[0][0][2] = 002
MNL[0][0][3] = 003
MNL[0][0][4] = 004
MNL[0][1][0] = 010
MNL[0][1][1] = 011
MNL[0][1][2] = 012
MNL[0][1][3] = 013
MNL[0][1][4] = 014
...

Для программного перебора элементов трехмерного массива нам понадобится тройной цикл: первый по элементам основного массива, второй — по элементам вложенного массива уровня N и третий — по элементам вложенного массива уровня L:

//вывод элементов массива
Для ИндM = 0 По MNL.ВГраница() Цикл
	Для ИндN = 0 По MNL[ИндM].ВГраница() Цикл
		Для ИндL = 0 По MNL[ИндM][ИндN].ВГраница() Цикл
			Сообщить("MNL[" + ИндM + "][" + ИндN + "][" + ИндL + "] = " + MNL[ИндM][ИндN][ИндL]);
		КонецЦикла;//ИндL
	КонецЦикла;//ИндN
КонецЦикла;//ИндM

Думаю, изучив эти примеры вы сможете самостоятельно построить более сложные многомерные массивы. Желаю удачи!

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *