Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.О.П / 3_кол / Лекції / лекция_С++ (12)_у.doc
Скачиваний:
11
Добавлен:
30.05.2020
Размер:
165.89 Кб
Скачать

Об’єктно-орієнтована технологія програмування

Тема12: Багатовимірні масиви План:

  1. Основні визначення

  2. Форми ініціалізації масиву

  3. Матриці

  4. Введення-виведення матриць

  5. Перебір елементів матриці

За визначенням, багатовимірні масиви як такі в С++ не існують, масив завжди вважається одновимірним. Проте в С++ дозволено оголошувати одновимірні масиви масивів (тобто багатовимірні масиви). Вони задаються вказівкою розміру кожній розмірності в квадратних дужках.

Наприклад, опис двовимірного масиву з 6 рядків по 8 стовпців: int matr [6][8]; інтерпретується як одновимірний масив з ім'ям matr з 6 елементів типа int[8].

Тривимірний масив double prim [6][4][2]; інтерпретується як одновимірний масив з ім'ям prim, що включає 6 елементів, кожен з яких має типа double [4][2]. У свою чергу, кожен з цих елементів є одновимірний масив з чотирьох елементів типа double [2]. І, нарешті, кожен з цих елементів є масивом з двох елементів типа double.

Для доступу до елементу багатовимірного масиву вказуються всі його індекси, наприклад: matr[i][j], prim [i][j][k];.

Форми ініціалізації масиву:

При структурній ініціалізації багатовимірний масив представляється як масив масивів, при цьому кожен масив полягає в свої фігурні дужки. При безструктурній ініціалізації задається загальний список елементів в тому порядку, в якому елементи розташовуються в пам'яті.

Багатовимірні масиви можуть ініціалізуватися і без вказівки розміру найлівішій розмірності. Компілятор в цьому випадку визначає число елементів по числу членів в списку ініціалізації.

Приклади:

структурна ініціалізація:

int mass [][2] = { {1,1}, {0, 2}, {1, 0} };

int array [2][3] = {{1, 2, 3}, {2, 3, 4}};

int а [2][3] [4]= {{{1}, {2, 3}, {4, 5, 6}}, {{1, 2}, {2, 3, 4}, {4, 5, 6, 7}}};

//результат ініціалізації: 1000 2300 4560 1200 2340 4567

безструктурна ініціалізація:

int mass [3][2] = {1, 1, 0, 2, 1, 0};

int а [2][3] [4]= {1, 0, 0, 0, 2, 3, 0, 0, 4, 5, 6, 0, 1, 0, 0, 0, 2, 3, 0, 0, 4, 5, 6, 0};

int m[] [3] = { 00, 01, 02, 10, 11, 12, 20, 21, 22}

У пам'яті багатовимірний масив розташовується в послідовних комірках по рядкам (шарах). Елементи з меншими значеннями індексу зберігаються в нижчих адресах пам'яті. Багатовимірні масиви розташовуються таким чином, що найправіший

індекс зростає найпершим. Наприклад, якщо є масив int array [10][3], то в пам'яті за збільшенням адрес будуть розміщені елементи:

array [0][0], array [0][1], array [0][2], array [1][0], array [1][1], array [1][2] ...,

array [9][0], array [9][1], array [9][2].

Розглянемо тривимірний масив: int M [10][2][3].

M[0], M[9] – одновимірні масиви, елементи яких є двовимірні масиви (матриці) int [2][3], що займають (2 х 3 х sizeof (int)) байт; M[0][0], M[0][1] – одновимірні масиви, елементи яких є одновимірні масиви (вектора) int [3], що займають (3 х sizeof (int)) байт; M[0][1][1], M[0][1][0] – значення типа int, що займають sizeof (int) байт.

В разі опису масиву double M [10][2][3], елементи M[0][1][0], M[0][1][1] є значення типа double, що займають sizeof(double) байт.

Соседние файлы в папке Лекції