C/C++

Для всeх зaдaч сфoрмировать oдномерный мaссив N случaйных чисeл из интервала (-10; 10).

Для всех задач сформировать одномерный массив N случайных чисел
из интервала (-10; 10). Предусмотреть автоматический и ручной способ
создания элементов массива.
Отсортировать по неубыванию методом выбора нечетные элементы
массива.
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
using namespace std;
class Array {
public:
Array(int n) : n(n), m(new int[n]) {}
~Array() {
if (m != nullptr) {
delete[] m;
m = nullptr;
}
}
void fill(int a, int b) {
if (a > b) swap(a, b);
uniform_int_distribution<> uid(a, b);
mt19937 gen{ random_device()() };
for (int i = 0; i < n; ++i) m[i] = uid(gen);
}
void show(streamsize w)const {
for (int i = 0; i < n; ++i) cout << setw(w) << m[i];
puts("");
}
void pn_range() {
auto fn = [](int a, int b) { return a >= 0 && b < 0; };
sort(m, m + n, fn);
}
void selection_sort() {
for (int i = 0; i < n - 1; ++i) {
int k = i;
for (int j = i + 1; j < n; j++) if (m[j] < m[k]) k = j;
swap(m[i], m[k]);
}
}
int size()const { return n; };
int* begin() { return m; }
int* end() { return m + n; }
private:
int n;
int* m;
};
unsigned size(const char* msg) {
cout << msg;
unsigned value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
int main() {
Array box(size("n: "));
box.fill(-10, 10);
box.show(4);
box.selection_sort();
box.show(4);
system("pause > nul");
}
MV
Marcel Vasilcan
61 897
Лучший ответ

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