Лекція 7: Двовимірні масиви (Матриці)
1. Що таке двовимірний масив?
Двовимірний масив — це масив масивів.
Двовимірний масив має два виміри: рядки (rows) та стовпці (columns).
Щоб звернутися до елемента, потрібно знати дві координати: номер рядка і номер стовпця.
Уявіть квиток у кіно: Ряд 5, Місце 12.
2. Оголошення та ініціалізація
Синтаксис схожий на звичайний масив, але додається друга пара квадратних дужок.
Загальний синтаксис: тип ім'я[кількість_рядків][кількість_стовпців];
int matrix[3][4]; // Таблиця: 3 рядки, 4 стовпці (всього 12 комірок)
Ініціалізація одразу при створенні: Ми можемо заповнити масив як набір рядків (у фігурних дужках):
int grid[2][3] = {
{1, 2, 3}, // Рядок 0
{4, 5, 6} // Рядок 1
};
3. Індексація
Нумерація починається з 0.
grid[0][0]— верхній лівий кут (число 1).grid[1][2]— другий рядок, третій елемент (число 6).
Важливо: Перший індекс — завжди рядок (вниз), другий — стовпець (вправо).
4. Вкладені цикли
Це найскладніший момент для початківців.
Щоб перебрати всі елементи таблиці, одного циклу недостатньо. Потрібен цикл всередині циклу.
- Зовнішній цикл перемикає рядки (
i). - Внутрішній цикл проходить по всіх стовпцях (
j) поточного рядка.
Приклад: Виведення масиву на екран у вигляді таблиці
#include <iostream>
using namespace std;
int main() {
// Створюємо масив 3х3
int map[3][3] = {
{1, 0, 0},
{0, 1, 0},
{0, 0, 1}
};
cout << "Матриця: " << endl;
// Зовнішній цикл: йдемо по рядках (від 0 до 2)
for (int i = 0; i < 3; i++) {
// Внутрішній цикл: йдемо по стовпцях (від 0 до 2)
for (int j = 0; j < 3; j++) {
cout << map[i][j] << " "; // Виводимо елемент і пробіл
}
cout << endl; // Коли внутрішній цикл завершив рядок, переходимо на новий
}
return 0;
}
5. Заповнення масиву користувачем
Тут логіка така сама: два цикли, але замість cout використовуємо cin.
#include <iostream>
using namespace std;
int main() {
const int ROWS = 2;
const int COLS = 2;
int warehouse[ROWS][COLS];
cout << "Заповніть склад (2х2):" << endl;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
cout << "Рядок " << i << ", Місце " << j << ": ";
cin >> warehouse[i][j];
}
}
return 0;
}
Практичні завдання до Лекції 7
Виконайте ці завдання в своєму середовищі розробки.
Завдання 1: Таблиця множення
Створіть двовимірний масив розміром 10x10. За допомогою двох циклів заповніть його значеннями таблиці множення.
- У комірку
table[i][j]треба записати результат множення(i + 1) * (j + 1). - Потім виведіть цю таблицю на екран рівними рядочками.
- Результат має виглядати як справжня таблиця Піфагора.
Завдання 2: Морський бій (спрощена версія)
Створіть поле 5х5 (масив bool або int), заповнене нулями (вода).
- "Поставте" кораблик в одну клітинку (наприклад, запишіть туди 1), не кажучи користувачеві куди.
- Попросіть користувача ввести координати пострілу (рядок і стовпець).
- Перевірте: якщо в цій комірці 1 — напишіть "Влучив!", якщо 0 — "Мимо!".
Завдання 3: Інверсія кольорів (Негатив)
Уявіть, що чорно-біле зображення — це таблиця чисел, де 0 — чорний, а 255 — білий.
- Створіть масив
3х3з довільними числами від 0 до 255. - Напишіть програму, яка перетворює зображення на негатив: кожне число
xзамінюється на255 - x. - Виведіть оновлену матрицю.