Масиви. Частина 2. Багатовимірні масиви. Ступінчаті масиви
Зміст
- Питання/відповідь
- 1. Який масив називається багатовимірним?
- 2. Яка загальна форма оголошення багатовимірного масиву?
- 3. Приклад оголошення та використання двовимірного масиву дійсних чисел розміром 3×4
- 4. Приклад оголошення та використання тривимірного масиву цілих чисел розміром 3×4×5
- 5. Як виглядає загальна форма ініціалізації багатовимірного масиву?
- 6. Приклад ініціалізаціїї двовимірного масиву розміром 5×3. Елементи масиву мають тип char
- 7. Приклад ініціалізації тривимірного масиву цілих чисел розміром 2×3×4
- 8. Що таке ступінчатий масив? Яка загальна форма оголошення ступінчатого масиву?
- 9. Приклад оголошення та використання ступінчатого масиву
- 10. В яких випадках доцільно використовувати ступінчаті масиви?
- 11. Яким чином реалізувати масив двовимірних масивів? Приклад
- Зв’язані теми
Пошук на інших ресурсах:
1. Який масив називається багатовимірним?
Багатовимірний масив – це масив, що має два і більше вимірів. Для доступу до елементу багатовимірного масиву використовується комбінація з двох і більше індексів.
⇑
2. Яка загальна форма оголошення багатовимірного масиву?
Загальна форма оголошення багатовимірного масиву наступна:
тип[,...,] ім’я_масиву = new тип[розмір1, розмір2, ..., розмірN];
де
- тип – безпосередньо тип елементів масиву;
- розмір1, розмір2, розмірN – розмірність кожного виміру масиву. Значення N означає, що масив N-вимірний.
⇑
3. Приклад оголошення та використання двовимірного масиву дійсних чисел розміром 3×4
У прикладі оголошується двовимірний масив дійсних чисел, які мають тип float
// оголошення та використання масиву дійсних чисел розміром 3*4 float[,] M = new float[3, 4]; // виділити пам'ять для масиву // заповнення масиву довільними значеннями for (int i = 0; i < 3; i++) for (int j = 0; j < 4; j++) M[i, j] = (float)(i * 0.2 + j * 0.3); // запис значень в окремі комірки масиву M[0, 1] = 0.35f; M[2, 2] = 1.45f;
⇑
4. Приклад оголошення та використання тривимірного масиву цілих чисел розміром 3×4×5
// оголошення тривимірного масиву цілих чисел розміром 3*4*5 ulong[, ,] A; // описати змінну (посилання) типу "тривимірний масив цілих чисел" A = new ulong[3, 4, 5]; // виділити пам'ять для масиву // записати в окремі комірки масиву значення A[0, 2, 3] = 232; A[0, 0, 1] = 300; A[2, 3, 1] = 20000;
⇑
5. Як виглядає загальна форма ініціалізації багатовимірного масиву?
Ініціалізація масиву дозволяє записати значення в комірки масиву в момент його оголошення в програмі.
Загальна форма ініціалізації багатовимірного масиву має такий вигляд:
тип[,] ім’я_масиву = { { значення, значення, ..., значення },
{ значення, значення, ..., значення },
...
{ значення, значення, ..., значення } };
де
- тип – тип елементів масиву;
- значення – значення, якими ініціалізуються елементи масиву.
⇑
6. Приклад ініціалізаціїї двовимірного масиву розміром 5×3. Елементи масиву мають тип char
// ініціалізація двовимірного масиву char[,] M = { { 'A', 'B', 'C', 'D', 'E' }, { '8', '-', '=', '>', '+' }, { '~', 'U', '&', '\\', '@' } };
⇑
7. Приклад ініціалізації тривимірного масиву цілих чисел розміром 2×3×4
// ініціалізація тривимірного масиву цілих чисел short[, ,] B = { { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }, { { 13, 14, 15, 16 }, { 17, 18, 19, 20 }, { 21, 22, 23, 24 } } };
⇑
8. Що таке ступінчатий масив? Яка загальна форма оголошення ступінчатого масиву?
Двовимірні масиви можуть бути двох видів:
- прямокутний масив у вигляді таблиці;
- ступінчатий масив. У цьому масиві кількість елементів кожного рядка (масиву) може бути різною. Ступінчатий масив ще називають масивом масивів.
Загальна форма оголошення ступінчатого масиву:
тип [][] ім’я_масиву = new тип[розмір][];
де
- тип – тип елементів масиву;
- розмір – кількість рядків у масиві.
⇑
9. Приклад оголошення та використання ступінчатого масиву
// ступінчаті масиви // оголошення масиву з 4-х рядків, елементи якого мають тип ulong ulong[][] A = new ulong[4][]; // виділення пам'яті для кожного рядка A[0] = new ulong[5]; // у рядку з індексом 0 є 5 елементів A[1] = new ulong[3]; // у рядку з індексом 1 є 3 елементи A[2] = new ulong[6]; A[3] = new ulong[4]; // демонстрація доступу до елементів масиву A A[0][0] = 2003; A[0][4] = 199008; A[1][2] = 302909; A[3][3] = 10000000; for (int i = 0; i < 6; i++) A[2][i] = (ulong)(i * i * i);
Як видно з прикладу, доступ до елементів ступінчатого масиву відбувається іншим способом на відміну від прямокутного масиву.
⇑
10. В яких випадках доцільно використовувати ступінчаті масиви?
Ступінчаті масиви є ефективними у випадках, коли у двовимірних прямокутних масивів є багато елементів, які взагалі не використовуються. Це дозволяє заощадити пам’ять за рахунок виділення тільки необхідного об’єму пам’яті (кількості елементів) для кожного рядка ступінчатого масиву.
На рисунку 1 відображено переваги застосування ступінчатих масивів у порівнянні з прямокутними. Продемонстровано можливу економію пам’яті у випадку, якщо дані представити прямокутним масивом в якому усі елементи деяких рядків (0, 2, 3, 4) не використовуються.
Варіант 1. Оголошення прямокутного масиву з іменем M.
// оголошення прямокутного масиву int[,] M = new int[5,100]; // виділяється 500 комірок типу int
Варіант 2. Оголошення ступінчатого масиву.
// оголошення ступінчатого масиву int[][] M = new int[5][]; // виділяється 50+100+30+60+40 = 280 комірок типу int M[0] = new int[50]; M[1] = new int[100]; M[2] = new int[30]; M[3] = new int[60]; M[4] = new int[40];
Рис. 1. Приклад економії пам’яті з допомогою ступінчатого масиву з 5 рядків у порівнянні з прямокутним масивом розміром 5×100
⇑
11. Яким чином реалізувати масив двовимірних масивів? Приклад
У прикладі реалізується масив двовимірних масивів з іменем M. Масив має 10 рядків. У кожному рядку формується двовимірний масив розміром 3×4.
// оголошення масиву з 10 двовимірних масивів дійсних чисел, кожен з яких має розмір 3*4 float[][,] M; // оголошення змінної типу масив двовимірних масивів // виділення пам'яті для 10 двовимірних масивів типу float M = new float[10][,]; // виділення пам'яті для кожного масиву розміром 3*4 for (int i = 0; i < 10; i++) M[i] = new float[3, 4]; // заповнення масивів довільними значеннями for (int i = 0; i < 10; i++) for (int j = 0; j < 3; j++) for (int k = 0; k < 4; k++) M[i][j, k] = i * 10 + j * 3 + k; // заповнити конкретні комірки M[0][2, 1] = 20.44f; M[2][0, 2] = 100.08f;
⇑
Зв’язані теми
- Одновимірні масиви. Приклади розв’язку задач з одновимірними масивами. Масиви структур. Масиви класів
- Посилання на масиви. Властивість Length. Присвоювання масивів
- Неявно типізовані масиви. Ключове слово var