Как вывести чётные, а затем нечётные элементы массива в одну строку?
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
setlocale(LC_ALL, "Russian");
int arr[10];
cout << "Введите элементы массива через пробел: ";
for (int i = 0; i < 10; i++) // цикл для считывания чисел
cin >> arr[i];
cout << "arr = {";
for (int i = 0; i < 10; i++) // цикл для вывода элементов массива
cout << arr[i] << " "; // выводим элементы массива на стандартное устройство вывода
cout << "}\n " << endl;
for (int i = 0; i < 10; i++) //цикл для нахождения чётности числа
{
if (arr[i] % 2 == 0)
{
cout << arr[i] << "- Чётное число \n";
}
if (arr[i] % 2 != 0)
{
cout << arr[i] << "- Нечётное число \n";
}
}
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Например...
№ 1. Выполнить два прохода, сначала четные, потом нечетные.
int main(int argc, const char * argv[])
{
int arr[20];
for(int i = 0; i < 20; ++i) arr[i] = rand()%100;
for(int i = 0; i < 20; ++i) if (arr[i]%2 == 0) cout << arr[i] << " ";
for(int i = 0; i < 20; ++i) if (arr[i]%2 == 1) cout << arr[i] << " ";
cout << endl;
}
№ 2. partition или stable_partition
int main(int argc, const char * argv[])
{
int arr[20];
for(int i = 0; i < 20; ++i) arr[i] = rand()%100;
stable_partition(arr,arr+20,[](int a) { return a%2==0; });
for(int i = 0; i < 20; ++i) cout << arr[i] << " ";
cout << endl;
}
№ 3. Отсортировать с соответствующим компаратором и вывести.
int main(int argc, const char * argv[])
{
int arr[20];
for(int i = 0; i < 20; ++i) arr[i] = rand()%100;
sort(arr,arr+20,[](int a, int b) { return a%2==0 && b%2; });
for(int i = 0; i < 20; ++i) cout << arr[i] << " ";
cout << endl;
}
Можно и еще сложнее и медленнее, но стоит ли? :)