Определите массив типа unsigned long и заполните его

Определите массив типа unsigned long и заполните его случайными числами. Размер массива задается случайным числом в диапазоне [7, 10]. Определите количество четных элементов массива, расположенных до максимального его элемента. Выполните сортировку массива по убыванию суммы старшего и младшего десятичных разрядов его элементов.
Дополнительные параметры: codeFlowType: codeWrite codeFlowLang: C++
Создано: 07.07.2023 16:00

Определите массив типа unsigned long и заполните его случайными числами. Размер массива задается случайным числом в диапазоне [7, 10]. Определите количество четных элементов массива, расположенных до максимального его элемента. Выполните сортировку массива по убыванию суммы старшего и младшего десятичных разрядов его элементов.

#include <iostream>
#include <ctime>
#include <cstdlib>

int countEvenElements(unsigned long arr[], int size) {
    int count = 0;
    unsigned long maxElement = arr[0];
    int maxIndex = 0;
    
    // Находим максимальный элемент массива и его индекс
    for (int i = 1; i < size; i++) {
        if (arr[i] > maxElement) {
            maxElement = arr[i];
            maxIndex = i;
        }
    }
    
    // Считаем количество четных элементов до максимального элемента
    for (int i = 0; i < maxIndex; i++) {
        if (arr[i] % 2 == 0) {
            count++;
        }
    }
    
    return count;
}

int getSumOfDigits(unsigned long num) {
    int sum = 0;
    
    // Складываем старший и младший десятичные разряды числа
    sum += num % 10;
    while (num >= 10) {
        num /= 10;
    }
    sum += num;
    
    return sum;
}

void sortArray(unsigned long arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            // Сравниваем суммы старшего и младшего десятичных разрядов элементов
            if (getSumOfDigits(arr[j]) < getSumOfDigits(arr[j + 1])) {
                std::swap(arr[j], arr[j + 1]);
            }
        }
    }
}

int main() {
    // Устанавливаем случайное зерно
    srand(time(0));
    
    int size = rand() % 4 + 7; // Генерируем случайный размер массива от 7 до 10
    unsigned long arr[size];
    
    // Заполняем массив случайными числами
    for (int i = 0; i < size; i++) {
        arr[i] = rand() % 1000;
    }
    
    int evenCount = countEvenElements(arr, size);
    
    std::cout << "Количество четных элементов до максимального: " << evenCount << std::endl;
    
    sortArray(arr, size);
    
    std::cout << "Отсортированный массив по убыванию суммы десятичных разрядов: ";
    for (int i = 0; i < size; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
    
    return 0;
}

Результат:

Количество четных элементов до максимального: <количество_четных_элементов>
Отсортированный массив по убыванию суммы десятичных разрядов: <элемент1> <элемент2> ... <элементN>

Где <количество_четных_элементов> - количество четных элементов до максимального элемента массива, а <элемент1>, <элемент2>, ..., <элементN> - элементы массива, отсортированные по убыванию суммы десятичных разрядов.