C/C++
Помогите пожалуйста решить задачу
Перечислить элементы массива целых чисел X в обратном порядке в массивY. Вычислить колличество чётных, нечетных и нулевых элементов массива Y
#include <iostream>
#include <random>
using namespace std;
struct Calc {
int even;
int odd;
int zero;
Calc () : even(0), odd(0), zero(0) {}
void add(int value) {
value & 1 ? ++odd : ++even;
if (!value) ++zero;
}
};
unsigned revnum(unsigned x) {
static unsigned n = 0;
if (!x) {
unsigned m = n;
n = 0;
return m;
}
n *= 10;
n += x % 10;
return revnum(x / 10);
}
void reverse(unsigned* x, unsigned* y, size_t n) {
for (auto i = 0U; i < n; ++i) y[i] = revnum(x[i]);
}
void show(unsigned* box, size_t n) {
for (auto i = 0U; i < n; ++i) cout << box[i] << ' ';
puts("");
}
void fill(unsigned* box, size_t n) {
uniform_int_distribution<unsigned> uid(0, 9);
mt19937 gen{ random_device()() };
for (auto i = 0U; i < n; ++i) box[i] = uid(gen);
}
Calc calcate(unsigned* box, size_t n) {
Calc stat;
for (auto i = 0U; i < n; ++i) stat.add(box[i]);
return stat;
}
int main() {
const auto n = 20U;
unsigned x[n], y[n];
fill(x, n);
show(x, n);
reverse(x, y, n);
show(y, n);
auto [even, odd, zero] = calcate(y, n);
cout
<< "Even: " << even << '\n'
<< "Odd: " << odd << '\n'
<< "Zero: " << zero << '\n';
system("pause > nul");
}
#include <random>
using namespace std;
struct Calc {
int even;
int odd;
int zero;
Calc () : even(0), odd(0), zero(0) {}
void add(int value) {
value & 1 ? ++odd : ++even;
if (!value) ++zero;
}
};
unsigned revnum(unsigned x) {
static unsigned n = 0;
if (!x) {
unsigned m = n;
n = 0;
return m;
}
n *= 10;
n += x % 10;
return revnum(x / 10);
}
void reverse(unsigned* x, unsigned* y, size_t n) {
for (auto i = 0U; i < n; ++i) y[i] = revnum(x[i]);
}
void show(unsigned* box, size_t n) {
for (auto i = 0U; i < n; ++i) cout << box[i] << ' ';
puts("");
}
void fill(unsigned* box, size_t n) {
uniform_int_distribution<unsigned> uid(0, 9);
mt19937 gen{ random_device()() };
for (auto i = 0U; i < n; ++i) box[i] = uid(gen);
}
Calc calcate(unsigned* box, size_t n) {
Calc stat;
for (auto i = 0U; i < n; ++i) stat.add(box[i]);
return stat;
}
int main() {
const auto n = 20U;
unsigned x[n], y[n];
fill(x, n);
show(x, n);
reverse(x, y, n);
show(y, n);
auto [even, odd, zero] = calcate(y, n);
cout
<< "Even: " << even << '\n'
<< "Odd: " << odd << '\n'
<< "Zero: " << zero << '\n';
system("pause > nul");
}
Приготовь мне лучше борщ вкусный. А программирование - не твоё
Похожие вопросы
- Помогите пожалуйста решить задачу на языке С#.
- Помогите пожалуйста решить задачу по с++
- Помогите пожалуйста решить задачу на Си
- Программирование С++. Помогите, пожалуйста, решить задачу.
- Помогите, пожалуйста, решить задачу.
- Помогите пожалуйста решить задачу на языке СИ или С# !!!
- Помогите пожалуйста решить задачу на C ИЛИ C#
- Помогите пожалуйста решить задачу на С#
- Помогите, пожалуйста, решить задачу C++.
- Помогите пожалуйста решить задачу по С++