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

Функції знаходження суми, добутку або кількості

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

Всі ці функції повертають ціле число (суму, кількість, добуток або -1), вхідні параметри це адреса масиву та кількість елементів у ньому.

Приклад 1

Написати функцію SumPositive, яка знаходить суму додатних елементів масиву цілих чисел

Написати функцію NumNegative, яка знаходить кількість від’ємних елементів масиву цілих чисел.

Використовуючи ці функції, а також функції RandArr та PrintArr написати таку програму:

1. Підключення бібліотек

#include <iostream>   // Для роботи з вводом/виводом (cin, cout)
#include <cstdlib>    // Для функцій rand() та srand()
#include <ctime>      // Для функції time()

2. Прототипи функцій

void RandArr(int*, int, int, int);  // Заповнення масиву
void PrintArr(int*, int);           // Виведення масиву
int SumPositive(int*, int);         // Сума додатних елементів
int NumNegative(int*, int);         // Кількість від'ємних елементів

3. Функція main

int main() {
    srand(time(0));  // Ініціалізація генератора
    
    int a, b, n;
    cout << "Введіть початок інтервалу a: ";
    cin >> a;
    cout << "Введіть кінець інтервалу b: ";
    cin >> b;
    cout << "Введіть кількість елементів n: ";
    cin >> n;
    
    int mass[n];  // Оголошення масиву
    
    RandArr(mass, n, a, b);  // Заповнення
    PrintArr(mass, n);       // Виведення
    
    int s = SumPositive(mass, n);  // Сума додатних
    int k = NumNegative(mass, n);  // Кількість від'ємних
    
    cout << "S=" << s << " K=" << k;
    return 0;
}

4. Реалізація функцій

1. Функція RandArr

void RandArr(int* arr, int n, int a, int b) {
    for (int i = 0; i < n; i++) {
        arr[i] = a + rand() % (b - a + 1);
    }
}

2. Функція PrintArr

void PrintArr(int* arr, int n) {
    cout << "Масив: ";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

3. Функція SumPositive

int SumPositive(int* arr, int n) {
    int sum = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i] > 0) {
            sum += arr[i];
        }
    }
    return sum;
}

4. Функція NumNegative

int NumNegative(int* arr, int n) {
    int count = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i] < 0) {
            count++;
        }
    }
    return count;
}

Приклад роботи програми

Введіть початок інтервалу a: -5
Введіть кінець інтервалу b: 5
Введіть кількість елементів n: 8

Масив: -2 3 0 4 -5 1 -3 2
S=10 K=3

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

Приклад 2

Написати функцію ProdEven, яка знаходить добуток парних елементів масиву цілих чисел.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Повний код програми

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

void RandArr(int* arr, int n, int a, int b);
void PrintArr(int* arr, int n);
int ProdEven(int* arr, int n);

int main() {
    srand(time(0));  // Ініціалізація генератора випадкових чисел
    
    int a, b, n;
    cout << "Введіть початок інтервалу a: ";
    cin >> a;
    cout << "Введіть кінець інтервалу b: ";
    cin >> b;
    cout << "Введіть кількість елементів масиву n: ";
    cin >> n;
    
    int mass[n];  // Створення масиву
    
    RandArr(mass, n, a, b);  // Заповнення масиву
    PrintArr(mass, n);       // Виведення масиву
    
    int product = ProdEven(mass, n);  // Обчислення добутку парних елементів
    
    if (product == -1) {
        cout << "У масиві немає парних елементів";
    } else {
        cout << "Добуток парних елементів: " << product;
    }
    
    return 0;
}

void RandArr(int* arr, int n, int a, int b) {
    for (int i = 0; i < n; i++) {
        arr[i] = a + rand() % (b - a + 1);
    }
}

void PrintArr(int* arr, int n) {
    cout << "Масив: ";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

int ProdEven(int* arr, int n) {
    int product = 1;
    bool hasEven = false;
    
    for (int i = 0; i < n; i++) {
        if (arr[i] % 2 == 0) {  // Перевірка на парність
            product *= arr[i];
            hasEven = true;
        }
    }
    
    return hasEven ? product : -1;  // Повертає -1, якщо парних елементів немає
}

Пояснення функції ProdEven

Функція ProdEven виконує наступні дії:

  1. Ініціалізує змінну product значенням 1 (нейтральний елемент для множення)
  2. Створює прапорець hasEven для відстеження наявності парних елементів
  3. Проходить по всіх елементах масиву:
  4. Повертає:

Тестування роботи програми

Тест1 (є парні елементи):

Введіть початок інтервалу a: 1
Введіть кінець інтервалу b: 10
Введіть кількість елементів масиву n: 5

Масив: 3 8 5 2 7 
Добуток парних елементів: 16

Тест 2 (немає парних елементів):

Введіть початок інтервалу a: 1
Введіть кінець інтервалу b: 9
Введіть кількість елементів масиву n: 4

Масив: 3 7 5 9 
У масиві немає парних елементів

Дана програма демонструє роботу з масивами, включаючи генерацію випадкових чисел, виведення масиву та пошук парних елементів з обчисленням їх добутку. Спеціальна обробка випадку відсутності парних елементів робить програму більш надійною.

Приклад 3

Написати функцію SumOddRange, яка знаходить суму непарних елементів масиву серед елементів з індексами з k1 по k2.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Повний код програми

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

void RandArr(int* arr, int n, int a, int b);
void PrintArr(int* arr, int n);
int SumOddRange(int* arr, int n, int k1, int k2);

int main() {
    srand(time(0));  // Ініціалізація генератора випадкових чисел
    
    int a, b, n;
    cout << "Введіть початок інтервалу a: ";
    cin >> a;
    cout << "Введіть кінець інтервалу b: ";
    cin >> b;
    cout << "Введіть кількість елементів масиву n: ";
    cin >> n;
    
    int mass[n];  // Створення масиву
    
    RandArr(mass, n, a, b);  // Заповнення масиву
    PrintArr(mass, n);       // Виведення масиву
    
    int m;
    cout << "Введіть кількість елементів для аналізу m: ";
    cin >> m;
    
    if (m <= n) {
        int sum = SumOddRange(mass, n, 0, m-1);
        cout << "Сума непарних елементів серед перших " << m << " елементів: " << sum;
    } else {
        cout << "Помилка: m перевищує розмір масиву";
    }
    
    return 0;
}

void RandArr(int* arr, int n, int a, int b) {
    for (int i = 0; i < n; i++) {
        arr[i] = a + rand() % (b - a + 1);
    }
}

void PrintArr(int* arr, int n) {
    cout << "Масив: ";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

int SumOddRange(int* arr, int n, int k1, int k2) {
    int sum = 0;
    
    // Перевірка коректності меж діапазону
    if (k1 < 0) k1 = 0;
    if (k2 >= n) k2 = n - 1;
    
    for (int i = k1; i <= k2; i++) {
        if (arr[i] % 2 != 0) {  // Перевірка на непарність
            sum += arr[i];
        }
    }
    
    return sum;
}

Пояснення функції SumOddRange

Функція SumOddRange виконує наступні дії:

  1. Ініціалізує змінну sum значенням 0
  2. Корегує межі діапазону, якщо вони виходять за межі масиву:
  3. Проходить по всіх елементах масиву від k1 до k2:
  4. Повертає отриману суму

Тестування роботи програми

Тест 1 (коректний ввід):

Введіть початок інтервалу a: 1
Введіть кінець інтервалу b: 10
Введіть кількість елементів масиву n: 6
Масив: 3 8 5 2 7 4 
Введіть кількість елементів для аналізу m: 4
Сума непарних елементів серед перших 4 елементів: 8

Тест 2 (m перевищує розмір масиву):

Введіть початок інтервалу a: 1
Введіть кінець інтервалу b: 5
Введіть кількість елементів масиву n: 3
Масив: 2 3 1 
Введіть кількість елементів для аналізу m: 5
Помилка: m перевищує розмір масиву

Тест 3 (немає непарних елементів):

Введіть початок інтервалу a: 2
Введіть кінець інтервалу b: 8
Введіть кількість елементів масиву n: 5
Масив: 2 4 6 8 2 
Введіть кількість елементів для аналізу m: 3
Сума непарних елементів серед перших 3 елементів: 0

Ця програма демонструє роботу з масивами, включаючи генерацію випадкових чисел, виведення масиву та пошук непарних елементів у заданому діапазоні. Особлива увага приділена обробці помилок, пов'язаних із виходом за межі масиву.

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

Варіант 1

Написати функцію Sum з прототипом int Sum(int* arr, int n), яка знаходить суму всіх елементів масиву цілих чисел

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 2

Написати функцію Num з прототипом int Num(int* arr, int n), яка знаходить кількість всіх парних елементів масиву цілих чисел

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 3

Написати функцію Sum з прототипом int Sum(int* arr, int n), яка знаходить суму від’ємних елементів масиву цілих чисел

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 4

Написати функцію Num з прототипом int Num(int* arr, int n), яка знаходить кількість всіх елементів масиву, що закінчуються цифрою 5.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 5

Написати функцію Prod з прототипом int Prod(int* arr, int n), яка знаходить добуток всіх елементів масиву

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 6

Написати функцію Prod з прототипом int Prod(int* arr, int n), яка знаходить добуток від’ємних елементів масиву

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 7

Написати функцію Sum з прототипом int Sum(int* arr, int n), яка знаходить суму елементів масиву, що закінчуються цифрою 3

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 8

Написати функцію Sum з прототипом int Sum(int* arr, int n), яка знаходить суму парних елементів масиву

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 9

Написати функцію Prod з прототипом int Prod(int* arr, int n, int k1, int k2), яка знаходить добуток елементів масиву з індексами з k1 по k2.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 10

Написати функцію NumPositiv з прототипом int NumPositiv(int* arr, int n), яка знаходить кількість додатних елементів масиву.

Написати функцію NumNegative з прототипом int NumNegative(int* arr, int n), яка знаходить кількість від’ємних елементів масиву.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 11

Написати функцію SumPositiv з прототипом int SumPositiv(int* arr, int n), яка знаходить суму додатних елементів масиву.

Написати функцію SumNegative з прототипом int SumNegative(int* arr, int n), яка знаходить суму від’ємних елементів масиву.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 12

Написати функцію Num з прототипом int Num(int* arr, int n), яка знаходить кількість двозначних елементів масиву.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 13

Написати функцію Num з прототипом int Num(int* arr, int n, int k1, int k2), яка знаходить кількість додатних чисел серед елементів з індексами з k1 по k2.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 14

Написати функцію Sum з прототипом int Sum(int* arr, int n, int k1, int k2), яка знаходить суму всіх елементів з індексами з k1 по k2.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 15

Написати функцію Sum з прототипом int Sum(int* arr, int n, int k1, int k2), яка знаходить суму від’ємних чисел серед елементів з індексами з k1 по k2.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 16

Написати функцію Num з прототипом int Num(int* arr, int n, int k1, int k2), яка знаходить кількість чисел Фібоначчи серед елементів з індексами з k1 по k2. Для визначення, чи є елемент числом Фібоначчі використовувати функцію IsFib.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

Варіант 17

Написати функцію Num з прототипом int Num(int* arr, int n, int k1, int k2), яка знаходить кількість простих чисел серед елементів з індексами з k1 по k2. Для визначення, чи є елемент простим числом використовувати функцію IsPrime.

Використовуючи цю функцію, а також функції RandArr та PrintArr написати таку програму:

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