12 Двовимірні масиви (матриці) - inf - w

Поняття двовимірного масиву

Двовимірний масив структура даних, що зберігає прямокутну таблицю (матрицю) виду:

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

Опис двовимірного С-масиву

Опис двовимірного масиву відрізняється від опису лінійного масиву тим, що вказуються дві розмірності, кожна з яких укладена в []:

Це опис означає, що оголошений цілочисельний масив mas містить 4 елементи, кожен з яких містить 6 елементів. Прийнято вважати, що перша розмірність визначає рядки, а друга - стовпці. Таким чином, ми оголосили двовимірний масив складається з 4 рядків і 6 стовпців.

Ініціалізація двовимірного C-масиву

Оскільки ми маємо справу з масивом масивів, то ініціалізація проводиться за допомогою вкладених <> як показано в прикладі нижче:

Якщо потрібно форматувати двовимірний масив нульових елементів, то слід чинити так:

Введення і виведення двовимірного С-масиву

Для організації введення значень елементів двовимірного С-масиву, а також для їх виведення використовується структура вкладених циклів (зазвичай for). У зовнішньому циклі (зазвичай з параметром i) здійснюється перебір рядків, тоді як у вкладеному циклі здійснюється перебір елементів поточного рядка (т. Е. Проходимо по стовпцях).
Програма 12.1 Заповнення масиву випадковими числами і висновок.

Програма виведе наступне:

Опис і ініціалізація двовимірного масиву array

Опис об'єкта array як двовимірний масив складається з 7 рядків і 5 стовпців виглядає наступним чином:

вираз array є описом типу вкладених масивів (що складаються з 5 цілих елементів) яких, в цілому, 7 штук. У програмі для введення і виведення елементів двовимірного масиву array можна використовувати діапазонний цикл for. який робить програму набагато компактніше:
програма 12.2

Одновимірна масив як двовимірний

Як ми вже сказали, необов'язково застосовувати масив масивів для роботи з двовимірними масивами, так як це може привести до неефективного алгоритму. Для цих цілей можна використовувати одновимірний масив. Для цього потрібно зробити наступне. Оголосимо дві константи row і col для визначення кількість рядків і стовпців. Далі в програмі можна обробляти елементи масиву, наприклад, так:
програма 12.3

Властивості діагоналей матриці

Матриця, в якої кількість рядків і стовпців однаково, називається - квадратної.
Елементи мають рівні індекси (i == j) знаходяться на головній діагоналі. Якщо елемент лежить на побічної діагоналі. то індекси пов'язані з розмірністю (n) наступним рівністю: i + j == n + 2.
Від позиції елемента буде залежати ставлення індексів. Якщо елемент лежить вище головної діагоналі, тоді i. В іншому випадку, i> j. Якщо елемент лежить вище побічної діагоналі, то i + j + 2. в іншому випадку i + j + 2> n. Однак, при вирішенні задач обходу матриці, необхідно уникати (там, де це можливо) застосування умовної інструкції if. Найчастіше, завдання можна реалізувати більш раціонально, шляхом маніпуляції індексами (інакше, змінними циклу i і j). Тобто, поставити в залежність зміна одного індексу, від величини іншого. Приклад завдання.
Програма 12.4 Дана квадратна матриця розміру n, елементи якої рівні 0. Заповнити елементи, що лежать нижче і на самій головній діагоналі одиницями.

Скласти програму заповнення масиву числами трикутника Паскаля і виведення цього масиву.
Примітка. Трикутник Паскаля має вигляд:

12 Двовимірні масиви (матриці) - inf - w

У цьому трикутнику на вершині і з боків стоять одиниці (в програмі 3 трикутник "покладено на бік" - сторони трикутника: перший стовпець і головна діагональ). Кожне число дорівнює сумі двох розташованих над ним чисел. Рядки трикутника симетричні щодо вертикальної осі.
програма 12.5

1. Що являє собою двовимірний масив в C ++?
2. Перелічіть способи заповнення двовимірного масиву даними.
3. Який масив називається квадратною матрицею?
4. Що потрібно враховувати при виведенні двовимірного масиву?
5. Що таке головна і побічна діагональ матриці?

1. Дано цілі додатні числа M і N. Сформувати целочисленную матрицю розміру M × N. у якій всі елементи I -й рядки мають значення 10 · I (I = 1, ..., M).
2. Дано цілі додатні числа M. N і набір з N чисел. Сформувати матрицю розміру M × N. у якій в кожному рядку містяться всі числа з вихідного набору (в тому ж порядку).
3. Дано цілі додатні числа M. N. число D і набір з M чисел. Сформувати матрицю розміру M × N. у якій перший стовпець збігається з вихідним набором чисел, а елементи кожного наступного стовпця дорівнюють сумі відповідного елемента попереднього стовпчика і числа D (в результаті кожен рядок матриці буде містити елементи арифметичної прогресії). [/ Su_list]

Схожі статті