Другие языки программирования и технологии

Переделать массив так чтобы сначала располагались 1 потом 0 потом 2

#include
#include
#include
using namespace std;
int main() {
srand(time(NULL));
int arr[11];
cout << "Massive" << endl;
for (int i = 0; i <= 11; i++) {
arr[i] = rand() % 3;
cout << " " << arr[i];
}
// Сортировка по возростанию
cout << "New Masssive" << endl;
cout << endl;
for (int i = 0; i <= 11; i++) {
for (int j = 0; j <= 11; j++) {
if (arr[i] < arr[j]) swap(arr[i], arr[j]);
}
}
for (int i = 0; i <= 11; i++) {
cout << " " << arr[i];
}
cout << endl;
cout << endl;
// Сделать в начале 1 дальше 0 потом 2

system("pause");
return 0;
}
Помолись, чтобы завтра я отдыхал -> Вохмянина не проводит завтра пары.

#include <iostream>
#include <windows.h>
#include <ctime>
#include <algorithm>

using namespace std;

void show(short unsigned *);

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
srand(time(NULL));
system("color 0A");

auto gen = []()
{
return rand() % 3u;
};

cout << "Укажите длину массива ";
size_t n;
cin >> n;
auto arr = new short unsigned[n];
generate(arr, arr + n, gen);
cout << "Исходное содержание массива" << endl;
show(arr);
size_t ind = 0u;
size_t pack_long = 3u;
auto pack = new short unsigned[pack_long];
pack[0] = 1u;
pack[1] = 0u;
pack[2] = 2u;
for (size_t p = 0u; p < pack_long - 1u; ++p)
{
for (size_t u = ind; u < n; ++u)
{
if (arr[u] == pack[p])
{
swap(arr[u], arr[ind++]);
}
}
}
cout << "Содержание обработанного массива" << endl;
show(arr);

system("pause");
return 0;
}

void show(short unsigned *arr)
{
size_t sz = _msize(arr) / sizeof(*arr);
for (size_t u = 0u; u < sz; ++u)
{
cout << arr[u] << " ";
}
cout << endl;
}
Moohammadinom Hafizov
Moohammadinom Hafizov
8 552
Лучший ответ
Быстрый и простой алгоритм такой.
Создай массив int[3]. Обнули его. Заполни массив так:
[0] - количество нулей
[1] - количество единиц
[2] - количество двоек
Это можно сделать одним циклом.
Из заполненного массива легко создать нужный тебе массив.
Сергей Смирнов
Сергей Смирнов
58 065