Тема: Перетин двох множин. (С++)
Дано два масиви: А [m] та B [n] (m і n вводяться з клавіатури). Необхідно створити третій масив мінімально можливого розміру, в якому потрібно зібрати спільні елементи двох перших масивів без повторень.
а ось мій код (там все добре тільки функція збір не працює(повина заповнити 3 масив))
#include <iostream>
#include <time.h>
using namespace std;
void set(int *ar, int n);
void print(int *ar, int n);
int* zbir(int *ar, int n, int *ar1, int m, int* ar2, int *a);
void main() {
srand(time(0));
int n, m, a = 1;
cin >> n;
int* ar = new int[n];
cin >> m;
int* ar1 = new int[m];
int* ar2 = new int[a];
set(ar, n);
print(ar, n);
cout << "\n";
set(ar1, m);
print(ar1, m);
cout << "\n";
ar2 = zbir(ar, n, ar, m, ar2, &a);
print(ar2, a);
cout << "\n";
system("pause");
}
int* zbir(int *ar, int n, int *ar1, int m, int* ar2, int *a) {
int* p = new int[*a];
for (int i = 0; i < n; i++) {
if ((*ar + n) == (*ar1 + m)) {
*(p + *a) = (*ar + n);
*a++;
}
}
for (int i = 0; i < m; i++) {
if ((*ar1 + m) == (*ar + n)) {
*(p + *a) = (*ar1 + m);
*a++;
}
}
a--;
delete[] ar2;
return p;
}
void set(int *ar, int n) {
for (int i = 0; i < n; i++) {
*(ar + i) = rand() % 101 - 50;
}
}
void print(int *ar, int n) {
for (int i = 0; i < n; i++) {
cout << *(ar + i) << " ";
}
cout << "\n";
}