C/C++

Массивы в с++

Найти наименьшее среди чисел первой последовательности, не входящих во вторую.
\Для тестирования предусмотреть возможность задавать элементы массива различным образом: при описании с инициализацией, присвоением значений (в том числе случайных), или вводом необходимых значений.
#include <algorithm>
#include <iostream>
#include <random>
#include <set>
#include <iterator>
using namespace std;
unsigned integer(const char* msg) {
auto value = 0U;
while (!value) {
cout << msg;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
}
return value;
}
int min(int* va, const size_t na, int* vb, const size_t nb) {
set<int> a{ va, va + na };
set<int> b{ vb, vb + nb };
set<int> c;
set_difference(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.end()));
return *c.begin();
}
void test_1() {
int first[] = { 23, 14, 57, 48, 69, 35, 41, 87, 62, 14, 33, 64 };
for (auto item : first) cout << item << ' ';
puts("");
int second[] = { 23, 55, 57, 74, 69, 31, 41, 62, 33, 18, 14 };
for (auto item : second) cout << item << ' ';
puts("");
cout << "min: " << min(first, size(first), second, size(second)) << '\n';
}
void test_2(const size_t na, const size_t nb) {
auto va = new int[na];
cout << "Elements A: ";
for (auto i = 0U; i < na; ++i) cin >> va[i];
cout << "Elements B: ";
auto vb = new int[nb];
for (auto i = 0U; i < nb; ++i) cin >> vb[i];
cout << "min: " << min(va, na, vb, nb) << '\n';
delete[] va;
delete[] vb;
}
void test_3(int* va, const size_t na, int* vb, const size_t nb) {
uniform_int_distribution<> uid(10, 99);
mt19937 gen{ random_device()() };
for (auto i = 0U; i < na; ++i) {
va[i] = uid(gen);
cout << va[i] << ' ';
}
puts("");
for (auto i = 0U; i < nb; ++i) {
vb[i] = uid(gen);
cout << vb[i] << ' ';
}
puts("");
cout << "min: " << min(va, na, vb, nb) << '\n';
}
int main() {
test_1();
auto na = integer("Length A: ");
auto nb = integer("Length B: ");
test_2(na, nb);
auto va = new int[na << 1];
auto vb = new int[nb << 1];
test_3(va, na, vb, nb);
delete[] va;
delete[] vb;
system("pause > nul");
}
Ruslan Simanov
Ruslan Simanov
69 021
Лучший ответ