Как исповедующий подход на атомарное разбиение кода на функции/методы/классы, предпочитаю видеть код, в котором каждая операция выполняется в своей функции.
Это упрощает повторное использование кода, да и мыслить такой код проще, чем когда тебе в одной функции нужно отслеживать несколько состояний для их синхронизации.
В данном задании действие этого подхода видно слабо.
P.S. srand(time(nulptr)) и rand() - "плохой" способ получения случайных чисел, так как время находится под контролем пользователя и он может выставлять время специально. Но "хороший" способ реализовывать здесь смысла нет.
===========================
Если решение удовлетворило, не забудь отметить его как "Лучшее".
===========================
Код:
#include
#include
#include
int rand_range(int min, int max) {
return std::rand() % (max - min + 1) + min;
}
int* random_sequence(int N, int min, int max) {
int *arr = new int[N];
for(auto i = 0; i < N; ++i) {
arr[i] = rand_range(min, max);
}
return arr;
}
template
void print_sequence(const T * arr, size_t size) {
for(auto i = 0; i < size; ++i) {
std:: cout << arr[i] << " ";</em>
}
}
long calculate_production(const int *arr, size_t size) {
long accumulator = 1;
for(auto i = 0; i < size; ++i) {
if (i % 2 == 0) continue;
accumulator *= arr[i];
}
return accumulator;
}
int main() {
const int min_random = -19, max_random = 26;
int N;
std::cout << "How many number should we generate? N = ";</em>
std::cin >> N;
std::srand(std::time(nullptr));
int *arr = random_sequence(N, min_random, max_random);
print_sequence(arr, N);
auto result = calculate_production(arr, N);
std::cout << ":" << result;</em>
delete[] arr;
return 0;
}