Значит у нас есть какойто класс кторое в нем присуствут следующее:
в конструкторе мы должны указать количество элементов массива и функтор для
определения критерия сортировки и написать два класса для функторов которые будут определять, как именно
будут отсортированы рандомные числа внутри самого класс
(от большего к меньшему или наоборот)
Ну по факту там еще должно быть конструкторы копирования и перемещения, операторы присваивания копированием и перемещением но это уже мое, я это сделаю, мне только не доходит часть задания кототое перечислено в самом начале. Буду рад вам если вы поможете.
C/C++
Функторы и массивы в C++
#include <algorithm>
#include <iostream>
#include <random>
#include <functional>
#include <iomanip>
using namespace std;
class RandomInt {
public:
RandomInt() {
random_device device;
random_generator_.seed(device());
}
int next(int min, int max) {
if (min > max) swap(min, max);
uniform_int_distribution<int> range(min, max);
return range(random_generator_);
}
private:
mt19937 random_generator_;
};
class Array {
public:
// Сортировка по возрастанию
struct Increase {
bool operator()(int a, int b) {
return a < b;
}
};
// Сортировка по убыванию
struct Decrease {
bool operator()(int a, int b) {
return a > b;
}
};
Array(const size_t size, function<bool(int, int)> fn)
: size_(size), fn_(fn), box_(new int[size_]) {
}
void random_fill(int min, int max) {
RandomInt rand;
for (auto i = 0U; i < size_; ++i) box_[i] = rand.next(min, max);
sort(box_, box_ + size_, fn_);
}
int* begin() { return box_; }
const int* cbegin()const { return box_; }
int* end() { return box_ + size_; }
const int* end()const { return box_ + size_; }
private:
size_t size_;
function<bool(int, int)> fn_;
int* box_;
};
int main() {
Array a(10, Array::Increase());
Array b(15, Array::Decrease());
a.random_fill(10, 50);
b.random_fill(25, 90);
for (const auto x : a) cout << setw(4) << x;
cout.put('\n');
for (const auto x : b) cout << setw(4) << x;
cout.put('\n');
system("pause > nul");
}
#include <iostream>
#include <random>
#include <functional>
#include <iomanip>
using namespace std;
class RandomInt {
public:
RandomInt() {
random_device device;
random_generator_.seed(device());
}
int next(int min, int max) {
if (min > max) swap(min, max);
uniform_int_distribution<int> range(min, max);
return range(random_generator_);
}
private:
mt19937 random_generator_;
};
class Array {
public:
// Сортировка по возрастанию
struct Increase {
bool operator()(int a, int b) {
return a < b;
}
};
// Сортировка по убыванию
struct Decrease {
bool operator()(int a, int b) {
return a > b;
}
};
Array(const size_t size, function<bool(int, int)> fn)
: size_(size), fn_(fn), box_(new int[size_]) {
}
void random_fill(int min, int max) {
RandomInt rand;
for (auto i = 0U; i < size_; ++i) box_[i] = rand.next(min, max);
sort(box_, box_ + size_, fn_);
}
int* begin() { return box_; }
const int* cbegin()const { return box_; }
int* end() { return box_ + size_; }
const int* end()const { return box_ + size_; }
private:
size_t size_;
function<bool(int, int)> fn_;
int* box_;
};
int main() {
Array a(10, Array::Increase());
Array b(15, Array::Decrease());
a.random_fill(10, 50);
b.random_fill(25, 90);
for (const auto x : a) cout << setw(4) << x;
cout.put('\n');
for (const auto x : b) cout << setw(4) << x;
cout.put('\n');
system("pause > nul");
}
Похожие вопросы
- Помогите пожалуйста - создать 4 массива на c++
- Нужно решить задачу с массивами на C++
- Написать массив на C(не C++) пожалуйста!!! простым языком с пояснениями
- Массив функции c++ помогите
- Сложности с массивами структур c++
- Как удалить элемент массива в C++
- Одномерный массив в C++
- Помогите решить задачу с двумерным массивом на C++
- Найти наиболее часто встречаемое число в массиве на C++, используя только функции
- Как узнать длину двумерного массива в c++?