Найти максимальный элемент массива и заменить его суммой элементов предшествующих ему

Что это значит? Если заполнять массив по такому правилу, то при первой же итерации будет деление на ноль, так как sqrt(0) = 0. Если же изменить это условие, например, следующим образом:

C++Выделить код

1
2

for (size_t i = 0; i < SIZE; i++)
    A[i] = cos(i + 1) / sqrt(i + 1);

то максимальный элемент всегда будет первым, и искать сумму значений до него, а после менять ее с ним местами не будет иметь смысла (так как до него ничего нет).

Аналогично и при таком раскладе:

C++Выделить код

1
2

for (size_t i = 0; i < SIZE; i++)
    A[i] = cos(i) / sqrt(i + 1);

Максимальный элемент всегда первый.

Как вариант - можно рандомно перемешать массив после заполнения, но не думаю что такой вариант правильный.

Либо я не так понял условие?