НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ

C++ Підручник

C++ Головна C++ Інтро C++ Початок роботи C++ Синтаксис C++ Виведення C++ Коментарі C++ Змінні C++ Введення користувача C++ Типи даних C++ Оператори C++ Рядки C++ Математика C++ Булеві C++ Умови C++ Switch C++ Цикл While C++ Цикл For C++ Break/Continue C++ Масиви C++ Структури C++ Enums C++ Довідники C++ Вказівники

C++ Функції

C++ Функції C++ Параметри функції C++ Перевантаження функцій C++ Область застосування C++ Рекурсія

C++ Класи

C++ ООП C++ Класи/Об’єкти C++ Методи класу C++ Конструктори C++ Специфікатори доступу C++ Інкапсуляція C++ Успадкування C++ Поліморфізм C++ Файли C++ Винятки C++ Дата

C++ Як зробити

Скласти два числа Випадкові числа

C++ Довідник

C++ Довідник C++ Ключові слова C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime>

C++ Приклади

C++ Приклади C++ Компілятор C++ Вправи C++ Вікторина C++ Сертифікат

Мова програмування C++. Уроки W3Schools для початківців українською мовою

En Es De

C++ Багатовимірні масиви


Багатовимірні масиви

Багатовимірний масив – це масив масивів.

Щоб оголосити багатовимірний масив, визначте тип змінної, вкажіть ім’я масиву, а потім квадратні дужки, які вказують, скільки елементів містить основний масив, а потім інші квадратні дужки, які вказують, скільки елементів мають підмасиви:

string letters[2][4];

Як і у звичайних масивах, ви можете вставляти значення за допомогою літералу масиву – списку, розділеного комами, у фігурних дужках. У багатовимірному масиві кожен елемент літералу масиву є іншим літералом масиву.

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

Кожен набір квадратних дужок в декларації масиву додає ще один вимір до масиву. Кажуть, що такий масив, як наведений вище, має два виміри.

Масиви можуть мати будь-яку кількість розмірів. Чим більше розмірів має масив, тим складнішим стає код. Наступний масив має три виміри:

string letters[2][2][2] = {
  {
    { "A", "B" },
    { "C", "D" }
  },
  {
    { "E", "F" },
    { "G", "H" }
  }
};

Доступ до елементів багатовимірного масиву

Щоб отримати доступ до елемента багатовимірного масиву, укажіть номер індексу в кожному вимірі масиву.

Ця інструкція отримує доступ до значення елемента в першому рядку (0) і третьому стовпці (2) масиву letters (літери).

Приклад

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

cout << letters[0][2];  // Виведе "C"
Спробуйте самі »

Пам’ятайте, що: індекси масиву починаються з 0: [0] є першим елементом. [1] — другий елемент і т.д.


Зміна елементів у багатовимірному масиві

Щоб змінити значення елемента, зверніться до номера індексу елемента в кожному з вимірів:

Приклад

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};
letters[0][0] = "Z";

cout << letters[0][0];  // Тепер виведе "Z" замість "A"
Спробуйте самі »

Циклювання багатовимірного масиву

Щоб виконати цикл багатовимірного масиву, вам потрібен один цикл для кожного виміру масиву.

У наступному прикладі виводяться всі елементи в масиві letters:

Приклад

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 4; j++) {
    cout << letters[i][j] << "\n";
  }
}
Спробуйте самі »

У цьому прикладі показано, як циклювати тривимірний масив:

Приклад

string letters[2][2][2] = {
  {
    { "A", "B" },
    { "C", "D" }
  },
  {
    { "E", "F" },
    { "G", "H" }
  }
};

for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 2; j++) {
    for (int k = 0; k < 2; k++) {
      cout << letters[i][j][k] << "\n";
    }
  }
}
Спробуйте самі »

Чому саме багатовимірні масиви?

Багатовимірні масиви чудово відображають сітки. Цей приклад показує їх практичне використання. У наступному прикладі ми використовуємо багатовимірний масив для представлення невеличкої гри Battleship:

Приклад

// Ми ставимо "1" щоб вказати, що є корабель
bool ships[4][4] = {
  { 0, 1, 1, 0 },
  { 0, 0, 0, 0 },
  { 0, 0, 1, 0 },
  { 0, 0, 1, 0 }
};

// Слідкуйте за тим, скільки ударив гравець і скільки ходів він зіграв у цих змінних
int hits = 0;
int numberOfTurns = 0;

// Дозвольте гравцеві продовжувати рух, поки він не потрапить на всі чотири кораблі
while (hits < 4) {
  int row, column;

  cout << "Selecting coordinates\n";

  // Попросіть у гравця рядок
  cout << "Виберіть номер рядка від 0 до 3: ";
  cin >> row;

  // Попросіть у гравця стовпець
  cout << "Виберіть номер стовпця від 0 до 3: ";
  cin >> column;

  // Перевірте, чи існує корабель у цих координатах
  if (ships[row][column]) {
    // Якщо гравець потрапив у корабель, видаліть його, встановивши значення на нуль
    ships[row][column] = 0;

    // Збільшити лічильник ударів
    hits++;

    // Скажіть гравцеві, що він влучив у корабель і скільки кораблів залишилося
    cout << "Hit! " << (4-hits) << " left.\n\n";
  } else {
    // Скажіть гравцеві, що він пропустив
    cout << "Miss\n\n";
  }

  // Порахуйте, скільки ходів зробив гравець
  numberOfTurns++;
}

cout << "Перемога!\n";
cout << "Ви виграли в " << numberOfTurns << " ходів";
Виконати приклад »


Коментарі