C/C++

МОЛЮ О ПОМОЩИ!!! НУЖЕН КОД НА C++!!!!!!!!! ПОМОГИТЕ!!!!!!!!!!!

Создать рекурсивные функции для работы с массивами, протестировать их на подходящих примерах с каскадной (параллельной) рекурсией:

Для поиска в одномерном массиве:
1) максимального элемента
2) суммы всех отрицательных элементов
3) произведения тех элементов, квадрат которых меньше заданного числа W
 #include  
#include
#include
#include
#include

#define RAND(min, max) (rand() % ((max) - (min)) + (min))

using namespace std;

struct Result {
int max;
long long sum_negative;
double product;
Result()
: max(numeric_limits::min()), sum_negative(0), product(1.0) {}
void reset() {
max = numeric_limits::min();
sum_negative = 0;
product = 1.0;
}
};

Result task(int* box, const size_t n, const int w) {
static size_t i = 0;
static Result result;
if (i == n) {
auto value = result;
result.reset();
i = 0;
return value;
}
if (box[i] > result.max) result.max = box[i];
if (box[i] < 0) result.sum_negative += box[i];
if (box[i] * box[i] < w) result.product *= box[i];
++i;
return task(box, n, w);
}

int main() {
srand(unsigned(time(nullptr)));
constexpr size_t n = 16;
int box[n]{};
for (auto& x : box) {
x = RAND(-99, 100);
cout
Александр Дремин
Александр Дремин
70 954
Лучший ответ
 #include  
using namespace std;

int max_i(int* arr, int size)
{
if (size == 1) return *arr;
return max(max_i(arr, size / 2), max_i(arr + size / 2, size - size / 2));
}

int sum_i(int* arr, int size)
{
if (size == 1) return *arr < 0 ? *arr : 0;
return sum_i(arr, size / 2) + sum_i(arr + size / 2, size - size / 2);
}

int mul_i(int* arr, int size, int w)
{
if (size == 1) return *arr**arr
Furkat Halilov
Furkat Halilov
51 416