Назад Зміст Вперед


Заповнення та перегляд масиву

Перегляд двовимірного масиву для заповнення, виведення на екран або пошуку завжди виконується у двох вкладених циклах.

Причому зовнішній цикл повинен перебирати значення першого індексу (номери рядків), а внутрішній цикл — значення другого індексу (номери стовпців). Тобто спочатку переглядаються всі елементи першого рядка, потім другого — і так всі рядки.

Такий перегляд називається переглядом по рядках.

В окремих випадках можна переглядати двовимірний масив по стовпцях. Тобто спочатку переглядаються всі елементи першого стовпця, потім другого — і так всі стовпці.

У цьому випадку зовнішній цикл повинен перебирати значення другого індексу (номери стовпців), а внутрішній — значення першого індексу (номери рядків).

Приклад 1

Заповніть двовимірний масив цілих чисел розміром mxn випадковими числами з інтервалу [-x, x]. Знайдіть суму всіх додатних чисел.

Результат роботи програми

Програма

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;

// Прототипи функцій
void Randmass(int**, int, int, int, int); // Заповнення масиву випадковими числами
void Printmass(int**, int, int);          // Виведення масиву на екран
int Sum(int**, int, int);                 // Сума всіх додатних чисел

int main() {
    const int m = 3; // рядки
    const int n = 4; // стовпці
    int first_value = -10;
    int last_value = 10;
    
    setlocale(0, "RUS");
    srand(time(0)); // Ініціалізація генератора випадкових чисел
    
    // Виділення пам'яті для масиву
    int** matrix = new int*[m];
    for (int i = 0; i < m; i++) {
        matrix[i] = new int[n];
    }
    
    // Заповнення та виведення масиву
    Randmass(matrix, m, n, first_value, last_value);
    cout << "Масив:" << endl;
    Printmass(matrix, m, n);
    
    // Обчислення та виведення суми додатних чисел
    int summa = Sum(matrix, m, n);
    cout << "Сума додатних чисел матриці: " << summa << endl;
    
    // Звільнення пам'яті
    for (int i = 0; i < m; i++) {
        delete[] matrix[i];
    }
    delete[] matrix;
    
    return 0;
}

// Реалізації функцій
void Randmass(int** arr, int rows, int cols, int a, int b) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            arr[i][j] = rand() % (b - a + 1) + a;
        }
    }
}

void Printmass(int** arr, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            cout << setw(4) << arr[i][j];
        }
        cout << endl;
    }
}

int Sum(int** arr, int rows, int cols) {
    int sum = 0;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            if (arr[i][j] > 0) {
                sum += arr[i][j];
            }
        }
    }
    return sum;
}

Приклад 2

Заповніть двовимірний масив цілих чисел розміром 3x4 випадковими числами з інтервалу [10, 90]. Знайдіть у цьому масиві добуток чисел, що закінчуються цифрою 3. Якщо таких чисел немає — повідомити про це.

Результати роботи програми

Програма

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;

// Прототипи функцій
void Randmass(int**, int, int, int, int); // Заповнення масиву випадковими числами
void Printmass(int**, int, int);          // Виведення масиву на екран
long Product(int**, int, int);            // Добуток чисел, що закінчуються на 3

int main() {
    const int m = 4; // рядки
    const int n = 4; // стовпці
    int first_value = 10;
    int last_value = 90;
    
    setlocale(0, "RUS");
    srand(time(0)); // Ініціалізація генератора випадкових чисел
    
    // Виділення пам'яті для масиву
    int** matrix = new int*[m];
    for (int i = 0; i < m; i++) {
        matrix[i] = new int[n]{0};
    }
    
    // Заповнення та виведення масиву
    Randmass(matrix, m, n, first_value, last_value);
    cout << "Масив 4x4:" << endl;
    Printmass(matrix, m, n);
    
    // Обчислення добутку чисел, що закінчуються на 3
    long p = Product(matrix, m, n);
    if (p != 1) {
        cout << "Добуток чисел, що закінчуються на 3: " << p << endl;
    } else {
        cout << "Чисел, що закінчуються на 3, не знайдено" << endl;
    }
    
    // Звільнення пам'яті
    for (int i = 0; i < m; i++) {
        delete[] matrix[i];
    }
    delete[] matrix;
    
    return 0;
}

// Заповнення масиву випадковими числами
void Randmass(int** arr, int rows, int cols, int a, int b) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            arr[i][j] = rand() % (b - a + 1) + a;
        }
    }
}

// Виведення масиву
void Printmass(int** arr, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            cout << setw(4) << arr[i][j];
        }
        cout << endl;
    }
}

// Обчислення добутку чисел, що закінчуються на 3
long Product(int** arr, int rows, int cols) {
    long product = 1;
    bool found = false;
    
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            if (arr[i][j] % 10 == 3) {
                product *= arr[i][j];
                found = true;
            }
        }
    }
    
    return found ? product : 0;
}

Варіанти задач

  1. Заповніть двовимірний масив цілих чисел розміром 3x4 випадковими числами з інтервалу [-10, 10]. Знайдіть кількість від’ємних елементів цього масиву.
  2. Заповніть двовимірний масив цілих чисел розміром 3x4 випадковими числами з інтервалу [10, 20]. Знайдіть добуток усіх елементів масиву, кратних 3.
  3. Заповніть двовимірний масив цілих чисел розміром 4x3 випадковими числами з інтервалу [10, 50]. Знайдіть кількість усіх елементів масиву, які закінчуються на 5.
  4. Заповніть двовимірний масив цілих чисел розміром 4x3 випадковими числами з інтервалу [10, 30]. Знайдіть суму всіх непарних елементів масиву.
  5. Заповніть двовимірний масив цілих чисел розміром 3x4 випадковими числами з інтервалу [1, 20]. Знайдіть кількість елементів масиву, які більші за 10.
  6. Заповніть масив розміром 6x7 випадковими цілими числами з інтервалу [100, 900]. Знайдіть кількість елементів масиву, які починаються з цифри 7.
  7. Заповніть масив розміром 4x6 випадковими цілими числами з інтервалу [10, 90]. Знайдіть кількість елементів масиву, які складаються з однакових цифр.
  8. Заповніть масив розміром 3x4 випадковими числами з інтервалу [b, c]. Знайдіть суму всіх елементів масиву.
  9. Заповніть масив розміром 5x3 випадковими числами з інтервалу [b, c]. Знайдіть кількість елементів, більших за (b + c) / 2.
  10. Заповніть масив розміром 5x3 випадковими числами з множини {0, 1, 2}. Скільки одиниць у масиві?
  11. Заповніть масив розміром 3x5 випадковими числами з множини {0, 1}. З’ясуйте, чого більше у масиві — одиниць чи нулів.
  12. Заповніть масив розміром 5x3 випадковими тризначними числами. Знайдіть кількість паліндромів у масиві (наприклад, 121, 767).
  13. Заповніть масив розміром 6x7 випадковими чотиризначними числами. Знайдіть кількість “щасливих” чисел (наприклад, 1230, 5243 — сума перших двох цифр дорівнює сумі останніх двох).
  14. Заповніть масив розміром 7x5 випадковими числами з інтервалу [50, 900]. Знайдіть кількість чисел, які містять цифру 5.
  15. Заповніть масив розміром 6x8 випадковими числами з інтервалу [1, 500]. Знайдіть кількість чисел, які починаються з цифри 1.
  16. Заповніть масив розміром 8x5 випадковими числами з інтервалу [b, c]. Знайдіть кількість простих чисел у масиві.
  17. Заповніть масив розміром 7x9 випадковими числами з інтервалу [b, c]. Знайдіть кількість чисел Фібоначчі у масиві.

Назад Зміст Вперед