Ответы
#include <algorithm> // для std::sort
#include <iostream>
void sortEvenElements(int *array, int size)
{
std::sort(array, array + size, [](int a, int b) {
// сортувати за зростанням, якщо обидва елементи парні
if (a % 2 == 0 && b % 2 == 0) return a < b;
// залишити елементи без змін, якщо один з них непарний
return false;
});
}
int main()
{
int array[] = {7, 4, 8, 1, 3, 6, 5, 2};
int size = sizeof(array) / sizeof(array[0]);
sortEvenElements(array, size);
for (int i = 0; i < size; ++i)
std::cout << array[i] << " ";
return 0;
}
-------------------------------------------------------------------------------------------
В результаті буде отримано наступне:
7 4 8 1 3 6 5 2
Зверніть увагу, що функція sortEvenElements отримує аргументами масив та його розмір, а для сортування парних елементів за зростанням використовує функцію std::sort. Функція отримує третім аргументом компаратор, який задає критерії сортування. У цьому випадку компаратор повертає true тільки у випадку, якщо обидва порівнювані елементи парні, і тоді вони сортуються за зростанням. Якщо один з елементів непарний, компаратор повертає значення false, що залишає елементи без змін.