Другие языки программирования и технологии

Помогите, пожалуйста, составить программу на С++: .

Для каждого из заданных целочисленных массивов X[10], Y[12], Z[16] вычислить произведение элементов кратных 5 и найти максимальное из них. Вычисление произведения элементов кратных 5 оформить в виде функции.
#include <iostream>
#include <iomanip>
#include <ctime>
#include <string>

using namespace std;

void ini();
void rnd(short*, const size_t, short = 1, short = 50);
void print(short*, const size_t);
short max5(short*, const size_t);
long long mult5(short*, const size_t);
void test(short*, const size_t, const string);

int main() {
ini();
const size_t size_10 = 10, size_12 = 12, size_16 = 16;
short x[size_10], y[size_12], z[size_16];
test(x, size_10, "X");
test(y, size_12, "Y");
test(z, size_16, "Z");
cin.get();
}

void ini() {
setlocale(2, "");
srand(unsigned(time(nullptr)));
}

void test(short* arr, const size_t size, const string cnt) {
rnd(arr, size);
cout << " Массив " + cnt + ": "; print(arr, size);
short max = max5(arr, size);
if (max) {
cout << " Максимальное кратное 5 в массиве " + cnt + ": " << max;
cout << "\n Произведение элементов = " << mult5(arr, size);
}
else cout << " Массив " + cnt + " не содержит элементов кратных 5";
cout << "\n\n";
}

void rnd(short* arr, const size_t size, short l, short r) {
for (size_t i = 0; i < size; ++i) arr[i] = l + rand() % r;
}

void print(short* arr, const size_t size) {
for (size_t i = 0; i < size; ++i) cout << setw(3) << arr[i];
cout << endl;
}

short max5(short* arr, const size_t size) {
short mx = 0;
const short n = 5;
for (size_t i = 0; i < size; ++i) {
if (arr[i] % n) continue;
if (mx < arr[i]) mx = arr[i];
}
return mx;
}

long long mult5(short* arr, const size_t size) {
long long mlt = 1;
const short n = 5;
for (size_t i = 0; i < size; ++i) {
if (arr[i] % n) continue;
mlt *= arr[i];
}
return mlt;
}
Marat Zulpyharov
Marat Zulpyharov
63 733
Лучший ответ