C++ В одномерном массиве, состоящем из n вещественных элементов, вычислить
В одномерном массиве, состоящем из n вещественных элементов,
вычислить:
а) номер минимального элемента массива;
б) сумму элементов массива, расположенных между первым и вторым
отрицательными элементами;
в) преобразовать массив таким образом, чтобы сначала располагались все
элементы, модуль которых не превышает 1, а потом — все остальные.
У Вас плохо прописаны спецификации к задаче (как задаётся массив, нужно ли его выводить на печать до и после трансформации, что делать, если первые два отрицательных элемента стоят рядом или их вообще нет и т.д.), а сочинять их на ходу как правило всегда мало охотников. И ещё такой момент: вот у меня всё работает корректно, потому что хорошо продумано, а Вы хоть что-то поймёте из такого, например, кода?
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
void print_array(string s, double *A, int n)
{
int i, j = 0;
cout << s << setprecision(3) << endl;
for (i = 0; i < n; i++)
{
cout << setw(8) << A[i];
j++;
if (j == 10)
{
j = 0;
cout << endl;
}
}
if (j) cout << endl;
}
int main()
{
int i, indmini = 0, j, k = 0, l = 1, n, B[2];
double a, b, mini, s = 0;
cout << "\033[1ma b n: " << fixed;
cin >> a >> b >> n;
double *A = new double [n];
srand(time(nullptr));
mini = A[0] = (b - a) * rand() / RAND_MAX + a;
if (A[0] < 0.)
{
B[k] = 0;
k++;
}
for (i = 1; i < n; i++)
{
A[i] = (b - a) * rand() / RAND_MAX + a;
if (A[i] < mini)
{
mini = A[i];
indmini = i;
}
if (k < 2) if (A[i] < 0.)
{
B[k] = i;
k++;
}
}
if (k == 2) { if (B[1] - B[0] > 1)
for (i = B[0] + 1; i < B[1]; i++) s += A[i];
else l = 0; } else l = 0;
print_array("Array:", A, n);
cout << "min=" << setprecision(10)
<< mini << ", index=" << indmini <<
endl << B[0] << ' ' << B[1] << ": ";
if (l) cout << s << endl;
else cout << "no elements" << endl;
for (i = 1; i < n; i++) for (j = n - 1; j >= i; j--)
if (abs(A[j - 1]) > 1. && abs(A[j]) <= 1.)
swap(A[j - 1], A[j]);
print_array("Array after sorting", A, n);
delete [] A; cin.get();
cin.get(); return 0;
}

Сортировка, если что, пузырьковая, но если даже непонятно причём тут сортировка (а она здесь не по возрастанию или убыванию, а по следованию), то после этого что-то даже обсуждать бессмысленно...
vector<int> x = { 2,2,1,4 };
int min = find(x.begin(),x.end(),*min_element(begin(x), end(x))) - x.begin();
cout << min;
вот как сделать "a". Остальное делай сам
ясно. Ну так и вычисляй