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

Эксперты по С++. Помогите изменить код.

Решение задачи должно быть таким же только без использования библиотек vector и ctime
Для C++. Спасибо.

#include
#include
#include
#include
using namespace std;

void add(int*, int);
void print(int*, int);
int* Search(int*, int*, int, int);

const int size_s = 3;
const int size_b = 10;

int main()
{
int* small = new int[size_s];
int* big = new int[size_b];

add(small, size_s);
add(big, size_b);

print(small, size_s);
print(big, size_b);

cout << Search(small, big, size_s, size_b) << endl;

return 0;
}

int* Search (int* small, int* big, int size_s, int size_b)
{
vector v;
for (size_t i = 0; i < size_s; i++)
{
for(size_t j = 0; j < size_b; j++)
{
if (small[i] == big[j])
{
v.push_back(&big[j]);
i++;
continue;
}

else if (v.size() == size_s)
{
break;
}

else
{
v.resize(0);
continue;
}

}

}
if (v.size() == size_s)
{
return v[0];
}

else
{
return NULL;
}
}

void add(int* small, int size_s)
{
srand(time(NULL));

for (size_t i = 0; i < size_s; i++)
{
small[i] = rand() % 4;
}

}

void print(int* small, int size_s)
{
for (size_t i = 0; i < size_s; i++)
{
cout << small[i] << " ";
}

cout << endl;
}
#include <iostream>
using namespace std;
void print(int* m, const size_t s, const char* msg) {
cout << msg << ":";
for (auto i = 0U; i < s; ++i) {
cout << ' ' << m[i];
}
cout.put('\n');
}
size_t count(int* m, const size_t s, int v) {
auto n = 0U;
for (auto i = 0U; i < s; ++i) {
if (v == m[i]) {
++n;
}
}
return n;
}
size_t unique(int* d, int* m, const size_t s) {
if (!s) return s;
d[0] = m[0];
auto buff = 1U;
for (auto i = 1U; i < s; ++i) {
auto flag = true;
for (auto j = 0U; j < buff; ++j) {
if (d[j] == m[i]) {
flag = !flag;
break;
}
}
if (flag) {
++buff;
d[buff] = m[i];
}
}
return buff;
}
bool search(int* ma, const size_t sa, int* mb, const size_t sb) {
if (sb > sa) return false;
auto flag = true;
auto p = new int[sb];
auto buff = unique(p, mb, sb);
for (auto i = 0U; i < buff; ++i) {
if (count(ma, sa, p[i]) < count(mb, sb, p[i])) {
flag = !flag;
break;
}
}
delete[] p;
return flag;
}
int main() {
int a[] = { 1, 1, 2, 8, 4, 1, 3, 6, 9 }; // множество
int b[] = { 3, 8, 9, 1, 2, 1, 4 }; // да
int c[] = { 1, 1, 2, 8, 4, 1, 3, 6, 9, 1 }; // нет
int d[] = { 1, 1, 2, 8, 4, 1, 3, 6, 1 }; // нет
print(a, size(a), "a");
print(b, size(b), "b");
print(c, size(c), "c");
print(d, size(d), "d");
auto ab = search(a, size(a), b, size(b));
auto ac = search(a, size(a), c, size(c));
auto ad = search(a, size(a), d, size(d));
cout
<< "ab: " << (ab ? "Yes" : "No") << "!\n"
<< "ac: " << (ac ? "Yes" : "No") << "!\n"
<< "ad: " << (ad ? "Yes" : "No") << "!\n";
system("pause");
}
FK
Farrukh Karimov
80 715
Лучший ответ
Игор Коломиец То что нужно. Благодарю.
какой задачи?
Eljas Kaliev
Eljas Kaliev
1 742
maksimmta Эксперты разберутся какой ! ☺
Игор Коломиец Задание: Написать функцию, принимающую в качестве аргумента, указатели на два массива (А и В) и размеры массивов. Функция проверяет, является ли массив В подмножество массива А и возвращает указатель на начало найденного фрагмент, если элемента нет, возвращает 0.

Вррде код рабочий просто мне он нужен без использования библиотек ctime и vector чтобы из них остались только iostream и cstdlib