C/C++

Помогите составить задачу на программе С++

Дан массив из 15 целых случайных чисел, с максимальным значением не больше 40. Переписать из него в другой массив только четные числа. Содержимое полученного массива вывести на печать.
Suren Karaxanyan
Suren Karaxanyan
41
#include <iostream>
#include <ctime>

using namespace std;

int main()
{
const int size = 15;
int new_size = 0;
int A[size], B[size];
srand(time(NULL));
for(int x = 0; x < size; x++)
{
A[x] = rand() % 41; // генерация значений
cout << A[x] << ' '; // показываем, что получилось
}
cout << endl << endl;
for(int x = 0; x < size; x++)
if(A[x] % 2 == 0) B[new_size++] = A[x]; // копируем чётные

for(int x = 0; x < new_size; x++)
cout << B[x] << ' '; // выводим на печать
cout << endl;

return 0;
}
Алексей Крикуненко
Алексей Крикуненко
67 352
Лучший ответ
Алексей Крикуненко Вообще, всё сразу можно было бы сделать в одном массиве.
Но я исходил из условий задачи.
Suren Karaxanyan Словами генерации значение и тд вписывать обязательно?
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
#include <array>
using namespace std;
int main() {
uniform_int_distribution<> uid(0, 40);
mt19937 gen{ random_device()() };
const auto n = 15U;
array<int, n> box{};
for (auto& x : box) x = uid(gen);
for (auto x : box) cout << setw(4) << x;
puts("");
auto iseven = [](int x) { return ~x & 1; };
auto m = count_if(box.begin(), box.end(), iseven);
auto even = new int[m];
int i = 0;
for (auto x : box) if (iseven(x)) even[i++] = x;
for (i = 0; i < m; ++i) cout << setw(4) << even[i];
puts("");
delete[] even;
system("pause > nul");
}
ЯС
Ярик Свой
58 521