codeFlowType:
codeWrite
codeFlowLang:
C++
Определите массив типа 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>
- элементы массива, отсортированные по убыванию суммы десятичных разрядов.