Программа должна создать два статических массива со случайными
элементами из диапазона [5;20], по 10 элементов в каждом массиве, вывести
каждый массив на экран на отдельной строке. Затем программа должна создать
динамический массив нужного размера и скопировать в него все общие
элементы из первых двух массивов(без повторений). Вывести получившийся
динамический массив на экран на отдельной строке.
Помогите решить эту задачу. Нужно срочно на завтра. Сделать на С++
Ответы
Ответ:
#include <iostream>
#include <ctime>
using namespace std;
struct dyn_arr
{
int *arr = nullptr;
int size = 0;
};
void push(dyn_arr &a, int n)
{
int *b = a.arr;
a.arr = new int[a.size+1];
for(int i = 0; i < a.size; i++) a.arr[i] = b[i];
a.arr[a.size] = n;
delete [] b;
a.size++;
}
int main()
{
srand(time(0));
dyn_arr d;
int a_1[10] = {0};
int a_2[10] = {0};
for(int i = 0; i < 10; i++)
{
a_1[i] = rand()%15+5;
a_2[i] = rand()%15+5;
}
cout << "1:\n";
for(int i : a_1) cout << i << ' ';
cout << "\n2:\n";
for(int i : a_2) cout << i << ' ';
for(int i : a_1)
for(int j : a_2)
if(i == j)
{
bool in_arr = 0;
for(int k = 0; k < d.size; k++) if(d.arr[k] == i){ in_arr = 1; break; }
if(!in_arr)push(d, i);
}
if(d.size){cout << "\nDYN: \n";
for(int i = 0; i < d.size; i++) cout << d.arr[i] << ' ';}
delete [] d.arr;
return 0;
}
Объяснение:
dyn_arr - структура, с динамическим массивом и его размером, чтобы легче передавать в функцию добавки элемента, a_1 - первый статический массив, a_2 - второй