дан Массив целых чисел, сортировку успешно провожу.
Как сделать так. чтобы при сортировке по возрастанию, элементы массива, которые меньше или равны 0 оставались на месте.
Другие языки программирования и технологии
как при сортировке одномерного массива оставить на месте неположительные элементы
#include < iostream >
#include < iomanip >
#include < random >
using namespace std;
int main()
{
random_device rnd;
uniform_int_distribution < int > genN(10, 100);
int n = genN(rnd);
int* a = new int [n];
cout << "Дан массив [" << n << "]:" << endl;
uniform_int_distribution < int > genV(-99, 99);
for (int i = 0; i < n; i++)
{
a[i] = genV(rnd);
cout << setw(4) << a[i];
}
// Сортировка
for (int i = 0; i < n - 1; i++)
if (a[i] > 0)
{
int imin = i;
for (int j = i + 1; j < n; j++)
if (a[j] > 0 && a[j] < a[imin])
imin = j;
if (i != imin)
{
a[i] ^= a[imin];
a[imin] ^= a[i];
a[i] ^= a[imin];
}
}
cout << endl << endl << "Отсортированный массив: " << endl;
for (int i = 0; i < n; i++)
cout << setw(4) << a[i];
cout << endl << endl
<< "Для завершения работы нажмите Enter...";
cin.get();
delete a;
return 0;
}
Пример выполнения программы:

#include < iomanip >
#include < random >
using namespace std;
int main()
{
random_device rnd;
uniform_int_distribution < int > genN(10, 100);
int n = genN(rnd);
int* a = new int [n];
cout << "Дан массив [" << n << "]:" << endl;
uniform_int_distribution < int > genV(-99, 99);
for (int i = 0; i < n; i++)
{
a[i] = genV(rnd);
cout << setw(4) << a[i];
}
// Сортировка
for (int i = 0; i < n - 1; i++)
if (a[i] > 0)
{
int imin = i;
for (int j = i + 1; j < n; j++)
if (a[j] > 0 && a[j] < a[imin])
imin = j;
if (i != imin)
{
a[i] ^= a[imin];
a[imin] ^= a[i];
a[i] ^= a[imin];
}
}
cout << endl << endl << "Отсортированный массив: " << endl;
for (int i = 0; i < n; i++)
cout << setw(4) << a[i];
cout << endl << endl
<< "Для завершения работы нажмите Enter...";
cin.get();
delete a;
return 0;
}
Пример выполнения программы:

if (a[i]>0) and (a[i]>a[j]) and (a[j]>0) then begin....end;
Похожие вопросы
- В одномерном массиве, состоящем из n вещественных элементов, вычис- лить: 39 1) сумму положительных элементов массив
- Microsoft Visual C++ 6.0 В одномерном массиве, состоящем из n вещественных элементов, вычислить...
- Язык Си: В одномерном массиве, состоящем из n вещественных элементов, вычислить: номер максимального по модулю элемента
- Сортировка одномерного массива + вставка числа в отсортированный массив PASCAL
- Сортировка одномерного массива
- помощь по си! сортировка одномерного массива!
- Можно-ли использовать сортировку слиянием на массиве, состоящем из 10-ти элементов.
- Помогите с С++. Надо найти произведение элементов одномерного массива между первым и последним 0.
- Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:
- поменяйте местами наибольший элемент данного одномерного массива с первым элементом и найменьший с последним ( язык си)
for (a[i]>0; a[i]>a[j] ; a[j]>0 )
{
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
cout << endl;
for (int i = 0; i < n-1; i++)
for (int j = 0; j < n-1-i; j++)
{
if (a[j]>a[j + 1])
{
b = a[j];
a[j] = a[j + 1];
a[j + 1] = b;
}
}
}
cout << " ";
for (int i = 0; i<n; i++)cout << a[i] << " ";
cout << endl;