Помогите решить задачу на C++.
В одномерном массиве расположить отрицательные элементы по убыванию, затем положительные элементы по возрастанию.(Массив сгенерить рандомно.)


lozromanik: Количество элементов тоже случайное?
guskov315: Возьмите к примеру 100

Ответы

Ответ дал: NqVixer
1

#include <iostream>

#include <ctime>

#include <algorithm>

using namespace std;

int main()

{

   srand(time(NULL));

   const int size = 100;

   int arr[size]{};

   for (int i = 0; i < size; i++) arr[i] = -20 + rand() % 41;

   int i{};

   for (i = 0; i < size; i++)

   {

       int max = -1;

       for (int j = i + 1; j < size; j++) if ((max == -1 && arr[j] < 0) || (arr[j] > arr[max] && arr[j] < 0)) max = j;

       if (max == -1) break;

       swap(arr[i], arr[max]);

   }

   for (; i < size; i++)

   {

       int min = -1;

       for (int j = i; j < size; j++) if ((min == -1 && arr[j] >= 0) || (arr[j] < arr[min] && arr[j] >= 0)) min = j;

       if (min == -1) break;

       swap(arr[i], arr[min]);

   }

   for (int i = 0; i < size; i++) cout << arr[i] << " ";

   return 0;

}

Объяснение:

Элементы массива заполняются рандомно числами от -20 до 20, вид сортировки: выборкой


math52: помогите пожалуйста с моим вопросом в профиле. взамен "пролайкаю" несколько ваших ответов. паскаль абс нет
Вас заинтересует