C/C++

Помогите решить задачу C++

14. Задан массив целых чисел A(n).
• Найти сумму элементов массива, кратных трем.
• Найти произведение ненулевых элементов массива с четными индексами.
• Сформировать массива B, в который записать последние k элементов массива A(n).
• Удалить из массива A(n) максимальный нечетный элемент.
#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int * mal(int size)
{ // выделение памяти
int * M;
M = new int[size];
return M;
}

void fre(int * M)
{ // освобождение памяти
if(M = (int*) nullptr) exit(1);
delete [] M;
M = (int*) nullptr;
}

void gen(int * M, const int size)
{ // генерация значений
srand(time(nullptr));
for(int x = 0; x < size; x++)
M[x] = rand() % 31 - 15;
}

void print(int * M, const int size)
{ // вывод на экран
for(int x = 0; x < size; x++)
cout << M[x] << ' ';
cout << endl << endl;
}

int maxn(int * M, const int size)
{ // индекс максимального элемента
int n = 0;
for(int x = 1; x < size; x++)
if(M[x] > M[n]) n = x;
return n;
}

int main()
{
int * A, * B, * C, n, i, k;
int sum = 0, p = 1, max;
do
{
cout << "Введите размер массива: ";
cin >> n;
} while(n < 1);
A = mal(n);
gen(A,n);
print(A,n);

for(int x = 0; x < n; x++)
if(A[x] % 3 == 0) sum += A[x];
cout << "Сумма элементов, кратных трём равна " << sum << '.' << endl;

for(int x = 0; x < n; x++)
if(x % 2 == 0 && A[x] != 0)
p *= A[x];
cout << "Произведение элементов массива с чётными индексами равно " << p << '.' << endl;

do
{
cout << "Введите число k: ";
cin >> k;
} while(k < 1 || k > n);
B = mal(k);
for(int x = 0; x < k; x++)
{
B[x] = A[n - k + x];
}
print(B,k);

max = maxn(A,n);
C = mal(n);
i = 0;
for(int x = 0; x < n; x++)
if(A[x] != A[max]) C[i++] = A[x];
fre(A);
A = mal(i);
for(int x = 0; x < i; x++)
A[x] = C[x];
print(A,i);

fre(C);
fre(B);
fre(A);
return 0;
}
ЛА
Лёшка Аксёнов
81 902
Лучший ответ