Вопрос задан 28.09.2023 в 12:58. Предмет Информатика. Спрашивает Апанович Влад.

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

убыванию, затем положительные элементы по возрастанию.(Массив сгенерить рандомно.)
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Абдраим Алдияр.

#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, вид сортировки: выборкой

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи вам нужно будет выполнить следующие шаги:

  1. Создайте одномерный массив и заполните его случайными числами.

  2. Разделите массив на отрицательные и положительные элементы.

  3. Отсортируйте отрицательные элементы по убыванию.

  4. Отсортируйте положительные элементы по возрастанию.

  5. Объедините отсортированные отрицательные и положительные элементы обратно в один массив.

Вот пример C++ кода, который решает эту задачу:

cpp
#include <iostream> #include <vector> #include <algorithm> #include <ctime> #include <cstdlib> int main() { // Задаем размер массива int n; std::cout << "Введите размер массива: "; std::cin >> n; // Создаем и заполняем массив случайными числами std::vector<int> arr(n); std::srand(static_cast<unsigned int>(std::time(nullptr))); for (int i = 0; i < n; ++i) { arr[i] = std::rand() % 201 - 100; // Генерируем числа от -100 до 100 } // Разделяем массив на отрицательные и положительные элементы std::vector<int> negatives; std::vector<int> positives; for (int i = 0; i < n; ++i) { if (arr[i] < 0) { negatives.push_back(arr[i]); } else { positives.push_back(arr[i]); } } // Сортируем отрицательные элементы по убыванию std::sort(negatives.rbegin(), negatives.rend()); // Сортируем положительные элементы по возрастанию std::sort(positives.begin(), positives.end()); // Объединяем отсортированные массивы обратно arr.clear(); arr.insert(arr.end(), negatives.begin(), negatives.end()); arr.insert(arr.end(), positives.begin(), positives.end()); // Выводим отсортированный массив std::cout << "Отсортированный массив: "; for (int i = 0; i < n; ++i) { std::cout << arr[i] << " "; } std::cout << std::endl; return 0; }

Этот код сначала создает массив случайных чисел, затем разделяет его на отрицательные и положительные элементы, сортирует их по необходимым правилам и объединяет обратно в один массив.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос