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

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

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



Для решения данной задачи вам нужно будет выполнить следующие шаги:
Создайте одномерный массив и заполните его случайными числами.
Разделите массив на отрицательные и положительные элементы.
Отсортируйте отрицательные элементы по убыванию.
Отсортируйте положительные элементы по возрастанию.
Объедините отсортированные отрицательные и положительные элементы обратно в один массив.
Вот пример 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;
}
Этот код сначала создает массив случайных чисел, затем разделяет его на отрицательные и положительные элементы, сортирует их по необходимым правилам и объединяет обратно в один массив.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili