Предмет: Информатика, автор: korner1

Программа должна создать два статических массива со случайными
элементами из диапазона [5;20], по 10 элементов в каждом массиве, вывести
каждый массив на экран на отдельной строке. Затем программа должна создать
динамический массив нужного размера и скопировать в него все общие
элементы из первых двух массивов(без повторений). Вывести получившийся
динамический массив на экран на отдельной строке.
Помогите решить эту задачу. Нужно срочно на завтра. Сделать на С++

Ответы

Автор ответа: WhalesNik
1

Ответ:

#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 - второй

Похожие вопросы
Предмет: Английский язык, автор: maziz261q
Предмет: Математика, автор: rodenkovt