
У пам'яті комп'ютера двовимірний масив зберігається порядково.


Квадратним називається масив, у якому кількість рядків дорівнює кількості стовпців.
n — кількість рядків, стовпців;
i — номер рядка;
j — номер стовпця.
Головною та побічною діагоналями квадратний масив ділиться на чотири частини (наведено властивості індексів з урахуванням того, що в С++ елементи нумеруються з 0):
| Розташування елементів | Властивість індексів | Ілюстрація |
|---|---|---|
| Головна діагональ | i == j |
![]() |
| Над головною діагоналлю | i < j |
![]() |
| Під головною діагоналлю | i > j |
![]() |
| Побічна діагональ | i + j == n - 1 |
![]() |
| Над побічною діагоналлю | i + j < n - 1 |
![]() |
| Під побічною діагоналлю | i + j > n - 1 |
![]() |
| Верхня чверть | (i < j) and (i + j < n - 1) |
![]() |
| Нижня чверть | (i > j) and (i + j > n - 1) |
![]() |
| Права чверть | (i < j) and (i + j > n - 1) |
![]() |
| Ліва чверть | (i > j) and (i + j < n - 1) |
![]() |
Сформувати квадратний двовимірний масив символів розміру n*n так, щоб:

#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
char A[20][20];
// Initialize diagonal with '#'
for (int i = 0; i < n; i++) {
A[i][i] = '#';
}
// Initialize other elements
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i + j == n - 1) A[i][j] = '*';
else if ((i < j) && (i + j < n - 1)) A[i][j] = '1';
else if ((i > j) && (i + j > n - 1)) A[i][j] = '2';
else if ((i < j) && (i + j > n - 1)) A[i][j] = '3';
else if ((i > j) && (i + j < n - 1)) A[i][j] = '4';
}
}
// Print the matrix
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << A[i][j];
}
cout << endl;
}
return 0;
}
Дано квадратний двовимірний масив цілих чисел розміром 5х5. Знайдіть найбільший елемент головної діагоналі цього масиву.

/***********
Дано квадратну матрицю цілих чисел розміром 5×5.
Знайти найбільший елемент головної діагоналі цієї матриці.
***********/
#include <iostream>
#include <cstdlib> // Виправлено <stdlib> на <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
const int SIZE = 5; // Фіксований розмір матриці
void Randmass(int**, int, int, int); // Заповнення масиву випадковими числами
void Printmass(int**, int); // Виведення масиву на екран
int MaxDiag(int**, int); // Максимум серед елементів головної діагоналі
int main() {
int first_value, last_value;
setlocale(0, "UKR"); // Українська локаль
cout << "Введіть діапазон значень масиву: " << endl;
cin >> first_value >> last_value;
srand(time(0)); // Ініціалізація генератора випадкових чисел
// Виділення пам'яті для матриці 5x5
int** matrix = new int*[SIZE];
for (int i = 0; i < SIZE; i++) {
matrix[i] = new int[SIZE];
}
Randmass(matrix, SIZE, first_value, last_value);
cout << endl;
Printmass(matrix, SIZE);
int max = MaxDiag(matrix, SIZE);
cout << endl << "Максимум серед елементів головної діагоналі матриці: " << max << endl;
// Звільнення пам'яті
for (int i = 0; i < SIZE; i++) {
delete[] matrix[i];
}
delete[] matrix;
return 0;
}
Останній цикл програми можна спростити наступним чином:
// Функція для заповнення масиву випадковими значеннями
void Randmass(int** mass, int sizematrix, int first_value, int last_value) {
cout << "Ініціалізація масиву розміру " << sizematrix << "x" << sizematrix << endl;
for (int i = 0; i < sizematrix; i++) {
for (int j = 0; j < sizematrix; j++) {
mass[i][j] = first_value + rand() % (last_value - first_value + 1);
}
}
}
// Функція для виведення масиву
void Printmass(int** mass, int sizematrix) {
cout << "Друк масиву:" << endl;
for (int i = 0; i < sizematrix; i++) {
cout << endl;
for (int j = 0; j < sizematrix; j++) {
cout << "\t" << mass[i][j];
}
}
}
// Функція для знаходження максимального елемента на головній діагоналі
int MaxDiag(int** x, int n) {
int max = x[0][0]; // Починаємо з першого елементу діагоналі
for (int i = 1; i < n; i++) { // Починаємо з 1, оскільки x[0][0] вже перевірено
if (x[i][i] > max) {
max = x[i][i];
}
}
return max;
}
Складіть програму на С++ , яка визначає, чи є послідовність елементів побічної діагоналі відсортованою за спаданням. Якщо ні — надрукувати координати першого елемента, що порушує спадання.


/***********
Складіть програму на С++ , яка визначає, чи є послідовність елементів побічної діагоналі,
відсортованою за спаданням. Якщо ні — надрукувати координати першого елемента, що порушує спадання.
***********/
#include <iostream>
using namespace std;
int main() {
const int MAX = 100;
int n;
int matrix[MAX][MAX];
cout << "Введіть розмір квадратної матриці (n x n): ";
cin >> n;
cout << "Введіть елементи матриці:\n";
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cin >> matrix[i][j];
}
}
// Перевірка побічної діагоналі на спадання
bool isDescending = true;
int row = -1, col = -1;
for (int i = 0; i < n - 1; ++i) {
int current = matrix[i][n - 1 - i];
int next = matrix[i + 1][n - 2 - i];
if (current <= next) {
isDescending = false;
row = i + 1;
col = n - 2 - i;
break;
}
}
if (isDescending) {
cout << "Елементи побічної діагоналі відсортовані за спаданням." << endl;
} else {
cout << "Порушення спадання на позиції: рядок = " <<row
<< ", стовпець = " << col << endl;
}
return 0;
}
З використовуванням vector :
#include <iostream>
#include <vector>
using namespace std;
// Функція для введення матриці
vector<vector<int>>inputMatrix(int n) {
vector<vector<int>> matrix(n, vector(n));
cout << "Введіть елементи матриці (" << n << " x " << n << "):\n";
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
cin >> matrix[i][j];
return matrix;
}
// Функція перевірки спадання побічної діагоналі
bool isSecondaryDiagonalDescending(const vector<vector<int>>& matrix, int& row, int& col) {
int n = matrix.size();
for (int i = 0; i < n - 1; ++i) {
int current = matrix[i][n - 1 - i];
int next = matrix[i + 1][n - 2 - i];
if (current <= next) {
row = i + 1;
col = n - 2 - i;
return false;
}
}
return true;
}
// Основна функція
int main() {
int n;
cout << "Введіть розмір квадратної матриці: ";
cin >> n;
vector<vector<int>> matrix = inputMatrix(n);
int row, col;
if (isSecondaryDiagonalDescending(matrix, row, col)) {
cout << "Елементи побічної діагоналі впорядковані за спаданням." <<endl;
} else {
cout << "Порушення спадання на позиції: рядок = " << row
<< ", стовпець = " << col << endl;
}
return 0;
}
У всіх програмах заповнити двовимірний масив цілих чисел розміром 5×5 і вивести його на екран.
- Знайдіть суму елементів головної діагоналі цього масиву.
- Знайдіть кількість непарних елементів побічної діагоналі цього масиву.
- Знайдіть суму від’ємних елементів побічної діагоналі цього масиву.
- Знайдіть суму непарних елементів головної діагоналі цього масиву.
- Знайдіть середнє арифметичне всіх елементів головної діагоналі цього масиву.
- Знайдіть середнє арифметичне всіх елементів побічної діагоналі цього масиву.
- Знайдіть мінімальний елемент побічної діагоналі цього масиву.
- Знайдіть середнє арифметичне всіх непарних елементів побічної діагоналі цього масиву.
- Знайдіть максимальний елемент побічної діагоналі цього масиву.
- Знайдіть добуток усіх елементів побічної діагоналі, що менші за 10.
- Знайдіть добуток елементів верхньої чверті.
- Знайдіть найбільший елемент серед елементів нижньої чверті.
- Знайдіть середнє арифметичне елементів лівої чверті.
- Знайдіть мінімальний елемент серед елементів правої чверті.
- Знайдіть кількість нулів у побічній діагоналі масиву.
- Складіть програму, яка визначає, чи є хоча б один елемент на побічній діагоналі, що дорівнює заданому числу X. Якщо так — надрукувати його координати; якщо ні — вивести повідомлення.
- Складіть програму, яка визначає, чи є послідовність елементів головної діагоналі відсортованою за зростанням. Якщо ні — надрукувати координати першого елемента, що порушує зростання.