
Массив на 10 элементов заполнить с клавиатуры натуральными числами, вывести его на строчку,
упорядочить четные элементы по возрастанию, нечетные оставить на своих местах. вывести в строчку уже отсортированый массив. помогите пожалуйста, очень срочно. программа с помощью сортировки пузырька на с++!!1

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

#include <iostream>
#include <vector>
#include <time.h>
using namespace std;
struct index_value {
int index;
int value;
};
vector<index_value> bubble_sort_fix(vector<index_value> vec) {
index_value temp;
for (size_t i = 0; i < vec.size()-1; i++)
{
for (size_t j = 0; j < vec.size() - i - 1; j++)
{
if (vec[j].value > vec[j + 1].value) {
temp.value = vec[j].value;
vec[j].value = vec[j + 1].value;
vec[j + 1].value = temp.value;
}
}
}
return vec;
}
vector<index_value> get_index_and_value_even_in_array(int* arr, int n) {
vector<index_value> vec_even_index_value;
index_value temp;
for (size_t i = 0; i < n; i++)
{
if (arr[i] % 2 == 0) {
temp.index = i;
temp.value = arr[i];
vec_even_index_value.push_back(temp);
}
}
return vec_even_index_value;
}
void print_array(int* arr, int n) {
for (size_t i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
int* push_in_array_even_vector(vector<index_value> vec, int* arr) {
int i = 0;
for (auto& elem : vec)
{
arr[elem.index] = elem.value;
}
return arr;
}
int* input_array_auto(int* arr, int n) {
for (size_t i = 0; i < n; i++)
{
arr[i] = rand() % 100 + 1;
}
return arr;
}
int* input_array(int* arr, int n) {
for (size_t i = 0; i < n; i++)
{
cin >> arr[i];
}
return arr;
}
void print_vector_index_value(vector<index_value> vec) {
for (auto& elem : vec)
{
cout << elem.index << " ";
cout << elem.value << endl;
}
cout << endl;
}
int main()
{
setlocale(LC_ALL, "Russian");
srand(time(NULL));
vector<index_value> vector_even;
int n;
cout << "Введите количество элементов: ";
cin >> n;
int* arr = new int[n];
arr = input_array_auto(arr, n);
print_array(arr, n);
vector_even = get_index_and_value_even_in_array(arr, n);
print_vector_index_value(vector_even);
vector_even = bubble_sort_fix(vector_even);
print_vector_index_value(vector_even);
arr = push_in_array_even_vector(vector_even, arr);
print_array(arr, n);
}



Конечно, я помогу вам! Вот пример программы на C++, которая решает вашу задачу, используя сортировку пузырьком:
cpp#include <iostream>
void bubbleSort(int arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] % 2 == 0 && arr[j + 1] % 2 == 0 && arr[j] > arr[j + 1]) {
// Обменять элементы, если оба четные и не в порядке возрастания
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
const int size = 10;
int arr[size];
std::cout << "Введите " << size << " натуральных чисел:\n";
for (int i = 0; i < size; i++) {
std::cin >> arr[i];
}
std::cout << "Исходный массив: ";
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
bubbleSort(arr, size);
std::cout << "\nОтсортированный массив: ";
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
return 0;
}
В этой программе массив заполняется с клавиатуры, затем выводится на экран. Затем применяется сортировка пузырьком только к четным элементам массива, а нечетные элементы остаются на своих местах. В конце программа выводит отсортированный массив.


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

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