Создать массив на основе старого
Помогите с задачей на c++. Сформировать новый массив из элементов одного знака, число которых больше. Если в массиве одинаковое число положительных и отрицательных элементов, то новый массив не создавать.
Ответы (1 шт):
Автор решения: Georgy Firsov
→ Ссылка
std::vector<int> initial = { ... };
auto is_negative = [](int value) { return value < 0; };
auto is_positive = [](int value) { return value > 0; };
size_t negative_count = std::count_if(
initial.cbegin(),
initial.cend(),
is_negative
);
size_t positive_count = std::count_if(
initial.cbegin(),
initial.cend(),
is_positive
);
std::vector<int> result{};
if (positive_count > negative_count)
{
std::copy_if(
initial.cbegin(),
initial.cend(),
std::back_inserter(result),
is_positive
);
}
else if (negative_count > positive_count)
{
std::copy_if(
initial.cbegin(),
initial.cend(),
std::back_inserter(result),
is_negative
);
}