Найти наименьшее среди чисел первой последовательности, не входящих во вторую.
\Для тестирования предусмотреть возможность задавать элементы массива различным образом: при описании с инициализацией, присвоением значений (в том числе случайных), или вводом необходимых значений.
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");
}
#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");
}
Похожие вопросы
- Заменить нулями элементы массива, которые расположены между первым минимальным и последним максимальным элементами масси
- Нужна помощь в составлении одномерных массивов С++
- Кольцевой сдвиг массива
- Помогите исправить и дописать программу с массивами на языке C++. Буду благодарен, т. к. самому уже не понятно.
- Помогите пожалуйста с Массивами .В языке С .Заполнил 2-мерный массив N и M случайными числами дальше не понимаю.
- Устройство статических и динамических массивов в оперативной памяти (...)
- Помогите пожалуйста - создать 4 массива на c++
- Помощь с Массивами C++
- Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел
- Двумерный динамический массив с неизвестны количеством столбиков или строк