Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по программированию на языке Си - A4.doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
670.21 Кб
Скачать

Вариант 11

Плоскость с введенной на ней системой координат разбита на клетки с длиной стороны 1. На некоторых клетках квадрата размером 10x10 клеток находятся амебы, на одной клетке - не более одной амебы. Две амебы, стоящие на соседних клетках по вертикали, горизонтали или диагонали, являются соседями. По истечении промежутка времени t амебы, имеющие менее двух соседей, гибнут от одиночества. Определить, сколько амеб будет по истечении времени t.

Задания III уровня сложности

Одномерные массивы

Вариант 1

Подсчитать наибольшее число одинаковых идущих подряд элементов заданного одномерного числового массива.

Вариант 2

Имеется n предметов с известным весом и стоимостью. Необходимо выбрать такие предметы, чтобы их суммарный вес был менее 30 кг, а стоимость – наибольшей. Найти суммарную стоимость выбранных предметов.

Вариант 3

Реализовать однопроходной алгоритм определения количества максимальных элементов заданного одномерного числового массива.

Двумерные массивы

Вариант 1

Дана квадратная матрица порядка 2n. Мысленно разделим ее на четыре непересекающихся блока порядка n x n. Определить функцию, переставляющую блоки ее элементов циклически по часовой стрелке.

Вариант 2

Определить функцию, заполняющую квадратную матрицу размером 6 х 6 числами от 1 до 18 в шахматном порядке, начиная с левого верхнего угла. Оставшиеся элементы заполнить нулями.

Вариант 3

Определить функцию, позволяющую повернуть квадратную матрицу на 90 градусов вправо.

Лабораторная работа №5 “ Указатели. Динамическое управление памятью”

Методические указания

  1. Создавая динамический массив, следует позаботиться о достаточном количестве памяти для размещения его элементов.

  2. Следует помнить, что освобождать можно только ту память, которая была ранее выделена.

  3. В задачах, требующих создания нового динамического массива, необходимо предусмотреть случай, когда в формируемом массиве может не оказаться ни одного элемента. Такую ситуацию надо обрабатывать отдельно.

Пример 1

Пусть задан одномерный массив вещественных чисел x[0], x[1], ... , x[n-1] (n - заданное натуральное число). Требуется получить и распечатать элементы этого массива в следующем порядке: x[k+1], x[k+2], ... , x[n-1], x[0], x[1], ..., x[k], (где k - индекс первого по порядку максимального элемента массива x). Физическое расположение в памяти элементов массива x не изменять. Для решения задачи использовать вспомогательный массив указателей.

#include <windows.h>

#include <wincon.h>

#include <stdio.h>

#include<time.h>

#include<stdlib.h>

void printp(int** p, int n);

void print(int* x, int n);

void rnd_vector(int* x, int n, int a, int b);

int ind_max(int* x, int n);

void formp(int* x, int** p, int n, int k);

void main()

{

SetConsoleOutputCP(1251);

srand ((unsigned)time(NULL));

const int n=10;

int a[n];

int imax; //Индекс максимального элемента массива

rnd_vector(a,n,1,50);

print(a,n);

puts("");

imax=ind_max(a,n);

int* r[n];

formp(a,r,n,imax);

printp(r,n);

}

/*

Функция заполняет массив x, состоящий из n элементов, случайными целыми числами из промежутка [a; b].

*/

void rnd_vector(int* x, int n, int a, int b )

{

for (int i=0;i<n;i++)

x[i]=(int)((double)rand()/RAND_MAX*(b-a+1)+a);

}

/*

Функция печатает массив x, состоящий из n элементов, на экране.

*/

void print(int* x,int n)

{

int i;

for(i=0; i<n; i++)

printf("%4d",x[i]);

puts("");

}

/*

Функция возвращает индекс первого по порядку максимального элемента массива x размера n.

*/

int ind_max(int* x, int n)

{

int max, ind;

max=x[0];

ind=0;

for( int i=0; i<n; i++)

if (x[i]>max)

{

max=x[i];

ind=i;

}

return ind;

}

/*

Функция печатает на экране значения, размещённые по адресам p[0], p[1], …, p[n-1], где p - массив, каждый элемент которого есть указатель на тип int, n – размер массива p.

*/

void printp(int** p, int n)

{

int i;

for(i=0; i<n; i++)

printf("%4d",*p[i]);

puts("");

}

/*

Функция заполняет массив указателей p адресами элементов массива x по заданному правилу (см. условие задачи).

n – размер массива p и массива x; k – индекс первого по порядку максимального элемента массива x.

*/

void formp(int* x, int** p, int n, int k)

{

int i,j;

for ( i=0, j=k+1; j<n ; i++,j++)

p[i]=&x[j];

for ( j=0; j<=k ;i++,j++)

p[i]=&x[j];

}

Пример 2

Задан одномерный массив целых чисел x. Получить новый массив y, состоящий из тех элементов массива x, которые кратны 7. Порядок следования и количество повторений этих чисел в исходном массиве сохранить. Оба массива разместить в динамической памяти.

Например:

x: 35, 11, 10, 7, 11, 35.

y: 35, 7, 35.

#include <windows.h>

#include <wincon.h>

#include <stdio.h>

#include<time.h>

#include<stdlib.h>

int* rand_array(int n,int a, int b);

void print_array(int*x, int n);

void main()

{

SetConsoleOutputCP(1251);

srand ((unsigned)time(NULL));

int n;

puts("Введите число элементов исходного массива:");

scanf("%d",&n);

int*a; //Объявлен указатель на исходный массив

a=rand_array(n,0,50);

puts("Исходный массив:");

print_array(a,n);

int k=0;

for (int i=0;i<n;i++)

if (a[i]%7==0)

k++;

if (k==0)

{

puts("Новый массив пустой.");

free(a);

return;

}

int*b; // Указатель на массив-результат

b=(int*)malloc(k*sizeof(int));

k=0;

for (i=0;i<n;i++)

if (a[i]%7==0)

b[k++]=a[i];

puts("Новый массив:");

print_array(b,k);

free(a);

free(b);

}

/*

Функция создаёт динамический массив из n элементов, заполняет его случайными целыми числами из промежутка [a;b] и возвращает указатель на начало этого массива.

*/

int* rand_array(int n,int a, int b)

{

int*x;

x=(int*)malloc(n*sizeof(int));

for (int i=0; i<n; i++)

x[i]=(int)((double)rand()/RAND_MAX*(b-a+1)+a);

return x;

}

/*

Функция печатает массив x на экране.

*/

void print_array(int* x, int n)

{

for (int i=0; i<n; i++)

printf("%5d", x[i]);

puts("");

}

Пример 3

Задан двумерный невыровненный массив. Получить новый массив такой же структуры, в котором продублировать все ненулевые элементы каждой строки заданного массива, разместив их в конце строки, сохраняя порядок их появления в строке исходного массива.

Например:

1 0 5 3 0 6 1 0 5 3 0 6 1 5 3 6

3 0 8 7 > 3 0 8 7 3 8 7

1 8 9 1 8 9 1 8 9

#include <windows.h>

#include <wincon.h>

#include <stdio.h>

#include <math.h>

#include<time.h>

#include<stdlib.h>

void print_dat(int n,int**x,int*d);

int*create_vector(int n, int a,int b);

int**create_dat(int n,int*d,int a,int b);

void delete_dat(int n, int**x,int*d);

void print_vector(int*x, int n);

void main()

{

SetConsoleOutputCP(1251);

srand ((unsigned)time(NULL));

/*Создание исходного двумерного динамического массива: */

int**a; //Указатель на двумерный массив

int n;

puts("Введите число строк исходного массива:");

scanf("%d",&n);

int*da; /*da - указатель на массив, содержащий длины строк массива a */

da=create_vector(n,2,5);

a=create_dat(n,da,0,7);

puts("Исходный массив:");

print_dat(n,a,da);

/*Создание нового двумерного динамического массива: */

int**b; //Указатель на двумерный массив

int*db; /*db - указатель на массив, содержащий длины строк массива b */

db=(int*)malloc(n*sizeof(int));

b=(int**)malloc(n*sizeof(int*));

int i,j,count,k;

for (i=0;i<n;i++)

{

count=0;

for (j=0;j<da[i];j++)

if (a[i][j]!=0)

count++;

//Длина i-ой строки массива b:

db[i]=da[i]+count;

b[i]=(int*)malloc((da[i]+count)*sizeof(int));

for (j=0;j<da[i];j++)

b[i][j]=a[i][j];

k=da[i];

for (j=0; j<da[i];j++)

if (a[i][j]!=0)

b[i][k++]=a[i][j];

}

puts("Новый массив:");

print_dat(n,b,db);

//Освобождение памяти:

delete_dat(n,b,db);

delete_dat(n,a,da);

}

/*

Функция выводит на экран двумерный невыровненный массив x, содержащий n строк.

d – указатель на одномерный массив из n элементов, в котором передаются длины строк массива x.

Длину каждой строки функция выводит в левом столбце.

*/

void print_dat(int n, int**x, int*d)

{

for(int i=0;i<n;i++)

{

printf("%5d%t%t",d[i]);

for(int j=0;j<d[i];j++)

printf("%5d",x[i][j]);

puts("");

}

puts("");

}

/*

Функция создаёт двумерный динамический невыровненный массив, содержащий n строк, заполняет его случайными целыми числами из промежутка [a;b] и возвращает указатель на начало этого массива.

d – указатель на одномерный массив из n элементов, в котором передаются длины строк двумерного массива.

*/

int**create_dat(int n, int*d, int a, int b )

{

int**x;

x=(int**)malloc(n*sizeof(int*));

for (int i=0;i<n;i++)

{

x[i]=(int*)malloc(d[i]*sizeof(int));

for (int j=0;j<d[i];j++)

x[i][j]= (int)((double)rand()/RAND_MAX*(b-a+1)+a);

}

return x;

}

/*

Функция create_vector() создаёт динамический массив из n элементов, заполняет его случайными целыми числами из промежутка [a;b] и возвращает указатель на начало этого массива.

*/

int* create_vector(int n,int a, int b)

{

int*x;

x=(int*)malloc(n*sizeof(int));

for (int i=0; i<n; i++)

x[i]=(int)((double)rand()/RAND_MAX*(b-a+1)+a);

return x;

}

/*

Функция печатает массив x на экране.

*/

void print_vector(int* x, int n)

{

for (int i=0; i<n; i++)

printf("%5d", x[i]);

puts("");

}

/*

Функция освобождает память, занятую двумерным динамическим массивом x, а также память, выделенную для длин его строк.

*/

void delete_dat(int n,int**x,int*d)

{

free(d);

for (int i=0; i<n; i++)

free(x[i]);

free(x);

}

Задания для самостоятельного выполнения

Задания I уровня сложности

Использование массивов указателей

Пусть задана последовательность вещественных чисел x[1], x[2],  , x[n] (где n – заданное натуральное число). Требуется получить и распечатать элементы этой последовательности в другом порядке (порядок задан ниже в конкретной задаче).

Примечание. Заданную последовательность чисел разместить в программе в виде статического массива. При этом учесть, что индексация массивов в Си начинается с нуля. Для решения задачи использовать вспомогательный массив указателей, соответствующий исходному массиву.

В вариантах 1 - 8 исходный массив x содержит 2n элементов (натуральное n задано).

В вариантах 9 - 14 n = 17.

В вариантах 15 - 19 n = 20.

В вариантах 20 - 30 n = 30.

Вариант 1

x[1], x[n+1], x[2], x[n+2], … , x[n], x[2n].

Вариант 2

x[1], x[2n], x[2], x[2n-1], … , x[n], x[n+1].

Вариант 3

x[2n], x[n], x[2n-1], x[n-1], … , x[n+1], x[1].

Вариант 4

x[2n], x[1], x[2n-1], x[2], … , x[n+1], x[n].

Вариант 5

x[n], x[n+1], x[n-1], x[n+2], … , x[1], x[2n].

Вариант 6

x[n], x[2n], x[n-1], x[2n-1], … , x[1], x[n+1].

Вариант 7

x[n+1], x[1], x[n+2], x[2], … , x[2n], x[n].

Вариант 8

x[n+1], x[n], x[n+2], x[n-1], … , x[2n], x[1].

Вариант 9

x[11], x[12], … , x[17], x[1], x[2], … , x[10].

Вариант 10

x[11], x[12], … , x[17], x[10], x[9], … , x[1].

Вариант 11

x[17], x[16], … , x[11], x[1], x[2], … , x[10].

Вариант 12

x[10], x[9], … , x[1], x[11], x[12], … , x[17].

Вариант 13

x[10], x[9], … , x[1], x[17], x[16], … , x[11].

Вариант 14

x[1], x[2], … , x[10], x[17], x[16], … , x[11].

Вариант 15

x[1], x[3], … , x[19], x[2], x[4], … , x[20].

Вариант 16

x[1], x[11], x[3], x[13], … , x[9], x[19].

Вариант 17

x[2], x[4], … , x[20], x[1], x[3], … , x[19].

Вариант 18

x[12], x[2], x[14], x[4], … , x[20], x[10].

Вариант 19

x[1], x[11], x[12], x[2], x[3], x[13], x[14], x[4], … , x[9], x[19] , x[20], x[10].

Вариант 20

x[1], x[4], x[7], … , x[28], x[2], x[5], x[8], … , x[29], x[3], x[6], x[9], … , x[30].

Вариант 21

x[2], x[5], x[8], …, x[29], x[1], x[4], x[7], … , x[28], x[3], x[6], x[9], … , x[30].

Вариант 22

x[3], x[6], x[9], … , x[30], x[1], x[4], x[7], … , x[28], x[2], x[5], x[8], … , x[29].

Вариант 23

x[3], x[6], x[9], … ,x[30], x[2], x[5], x[8], … , x[29], x[1], x[4], x[7], … , x[28].

Вариант 24

x[1], x[4], x[7], … , x[28], x[3], x[6], x[9], … ,x[30], x[2], x[5], x[8], … , x[29].

Вариант 25

x[2], x[5], x[8], …, x[29], x[3], x[6], x[9], … , x[30], x[1], x[4], x[7], … , x[28].

Вариант 26

x[30], … , x[9], x[6], x[3], x[29], … , x[8], x[5], x[2], x[28], … , x[7], x[4], x[1].

Вариант 27

x[30], … , x[9], x[6], x[3], x[28], … , x[7], x[4], x[1], x[29], … , x[8], x[5], x[2].

Вариант 28

x[29], … , x[8], x[5], x[2], x[30], … , x[9], x[6], x[3], x[28], …, x[7], x[4], x[1].

Вариант 29

x[29],… , x[8], x[5], x[2], x[28], …, x[7], x[4], x[1], x[30], … , x[9], x[6], x[3].

Вариант 30

x[28],…, x[7], x[4], x[1], x[29], … , x[8], x[5], x[2], x[30], … , x[9], x[6], x[3].

Вариант 31

x[28], … , x[7], x[4], x[1], x[30], … , x[9], x[6], x[3], x[29], … , x[8], x[5], x[2].

Одномерные динамические массивы

Вариант 1

Задан одномерный массив натуральных чисел x. Получить новый массив y, состоящий из тех элементов массива x, которые являются однозначными числами. Порядок следования и количество повторений таких чисел в исходном массиве сохранить. Оба массива разместить в динамической памяти.

Например: x: 32, 5, 1, 1, 7, 14, 5, 7, 32. y: 5, 1, 1, 7, 5, 7.

Вариант 2

Задан одномерный массив натуральных чисел x. Получить новый массив y, состоящий из тех элементов массива x, для которых последняя цифра в записи значения элемента есть 1. Порядок следования и количество повторений таких чисел в исходном массиве сохранить. Оба массива разместить в динамической памяти.

Например: x: 32, 5, 1, 1, 7, 141, 5, 7, 31. y: 1, 1, 141, 31.

Вариант 3

Заданы два одномерных массива x и y одинакового размера, элементами которых являются натуральные числа. Получить новый массив z, элементами которого являются такие индексы i, для которых x[i] и y[i] – либо оба четные, либо оба нечетные. Оба массива разместить в динамической памяти.

Например: x: 3, 5, 8, 3, 10, 12. y: 6, 7, 1, 7, 2, 11. z: 1, 3, 4.

Вариант 4

Заданы два одномерных массива x и y одинакового размера, элементами которых являются натуральные числа. Получить новый массив z, элементами которого являются такие индексы i, для которых x[i] и y[i] – либо оба однозначные, либо оба двузначные числа. Оба массива разместить в динамической памяти.

Например: x: 3, 5, 8, 633, 10, 12. y: 6, 7, 198, 773, 2, 11. z: 0, 1, 5.

Вариант 5

Заданы два одномерных массива различных размеров. Объединить их в один массив, включив второй массив между k-м и (k+1)-м элементами первого (число k задано).

Вариант 6

Задан одномерный числовой массив. Получить новый массив, включив в него все те элементы исходного массива, которые расположены между его первым и последним максимальными элементами. (Не включая сами максимальные элементы.)

Вариант 7

Задан одномерный числовой массив. Получить новый массив, включив в него все те элементы исходного массива, которые расположены после первого максимального элемента.

Вариант 8

Задан одномерный числовой массив. Получить новый массив, включив в него все те элементы исходного массива, которые расположены после последнего нулевого элемента.

Вариант 9

Задан одномерный числовой массив. Получить новый массив, включив в него все те элементы исходного массива, которые расположены до первого отрицательного элемента.

Вариант 10

Задан одномерный числовой массив. Получить новый массив, включив в него все те элементы исходного массива, которые расположены между первым и последним нулевыми элементами.

Вариант 11

Задан одномерный числовой массив. Получить два новых массива, в один записать все те элементы исходного массива, которые расположены до первого максимального элемента, в другой – все остальные.

Вариант 12

Задан одномерный числовой массив. Получить два новых массива, в один записать все те элементы исходного массива, которые расположены до первого его нулевого элемента, в другой – все остальные.

Вариант 13

Задан одномерный числовой массив. Получить два новых массива, в один записать все те элементы исходного массива, которые расположены между его первым и последним отрицательными элементами, в другой – все остальные.

Вариант 14

Задан одномерный числовой массив. Получить два новых массива, в один записать все те элементы исходного массива, которые расположены до первого максимального элемента, в другой – все остальные.

Двумерные динамические массивы

Вариант 1

Разреженную матрицу (содержащую незначительное количество отличных от нуля элементов) представить в виде трех одномерных массивов, элементами которых являются: номера строк, номера столбцов и значения ненулевых элементов.

Вариант 2

Пусть в каждой строке исходного массива имеется хотя бы один ненулевой элемент. Получить новый массив, удалив в каждой строке исходного массива все нулевые элементы.

Например: 1 0 5 3 0 6 1 5 3 6 3 0 8 7 → 3 8 7 1 8 9 1 8 9

Вариант 3

В новом массиве продублировать все ненулевые элементы каждой строки, разместив их в конце строки, сохраняя порядок их появления в строке исходного массива.

Например: 1 0 5 3 0 6 1 0 5 3 0 6 1 5 3 6 3 0 8 7 → 3 0 8 7 3 8 7 1 8 9 1 8 9 1 8 9

Вариант 4

В каждой строке нового массива оставить только те элементы исходного массива, которые не превосходят заданного значения P.

Например, при P = 3: 1 0 5 3 0 6 1 0 3 0 3 0 8 7 → 3 0 1 8 9 1

Вариант 5

Получить новый одномерный массив, включив в него последовательно все элементы тех строк исходного массива, максимальный элемент которых не превосходит заданного значения P.

Например, при P = 7: 1 0 5 3 0 6 3 0 8 7 → 1 0 5 3 0 6 1 3 4 1 3 4

Вариант 6

Получить два новых двумерных массива. В один включить все неотрицательные элементы, а в другой – все положительные элементы исходного массива, сохраняя расположение элементов по строкам.

Например: 1 0 –5 3 0 -6 1 0 3 0 -5 -6 3 0 -8 7 → 3 0 7 и -8 1 -3 -4 1 -3 -4

Вариант 7

Пусть исходный массив состоит только из нулей и единиц. Новый массив получить по правилу: если в i-ой строке исходного массива больше единиц, чем нулей, то заполнить i-ую строку нового массива одними единицами в том количестве, в каком они встречаются в соответствующей строке исходного массива, в противном случае i-ую строку нового массива заполнить нулями по тому же правилу.

Например: 1 0 1 1 0 1 1 1 1 1 1 0 0 1 → 0 0 1 0 0 0 0

Вариант 8

Получить новый одномерный массив, переписав в него последовательно те элементы каждой строки исходного массива, которые предшествуют первому встретившемуся нулевому элементу данной строки.

Например: 1 –5 3 0 -6 1 0 3 0 3 0 -8 7 → 1 -5 3 3 1 -3 -4 1 -3 -4

Вариант 9

Получить новый одномерный массив, переписав в него последовательно те элементы каждой строки исходного массива, которые предшествуют первому встретившемуся максимальному элементу данной строки.

Например: 1 –5 3 0 -6 1 0 3 0 3 0 -8 7 → 1 -5 3 0 -8 1 1 3 -4

Вариант 10

Получить новый одномерный массив, переписав в него последовательно те элементы каждой строки исходного массива, которые следуют за последним нулевым элементом данной строки.

Например: 1 –5 3 0 -6 1 0 3 3 0 8 7 → 3 8 7 1 -3 -4 1 -3 -4

Вариант 11

Получить новый двумерный массив по правилу: первый элемент каждой новой строки – это значение максимального элемента соответствующей старой строки; второй элемент новой строки – это количество максимальных элементов в старой строке; все последующие элементы новой строки – это индексы максимальных элементов старой строки.

Например: 1 –5 3 0 -6 1 0 3 3 2 2 7 3 0 8 7 → 8 1 2 1 -3 -4 1 1 0

Вариант 12

Получить новый одномерный массив, переписав в него последовательно те элементы каждой строки исходного массива, которые следуют за последним максимальным элементом данной строки.

Например: 1 –5 3 0 -6 1 0 3 0 9 0 8 7 → 0 0 8 7 -4 1 3 -4

Вариант 13

Получить новый двумерный массив по правилу: первый элемент каждой новой строки – это количество нулевых элементов соответствующей старой строки; все последующие элементы новой строки – это индексы нулевых элементов старой строки.

Например: 1 –5 3 0 -6 1 0 3 2 3 6 3 0 8 7 → 1 1 1 -3 -4 0

Вариант 14

Дан двумерный целочисленный массив. Сформировать результирующий одномерный массив, элементами которого являются суммы элементов по строкам для тех строк, которые начинаются с положительного числа.

Задания II уровня сложности

Использование массивов указателей

Вариант 1

Пусть задан одномерный массив вещественных чисел x[0], x[1], ... , x[n-1] (n - заданное натуральное число). Требуется получить и распечатать элементы этого массива в следующем порядке: сначала получить элементы массива, целая часть которых является четным числом (с сохранением порядка взаимного расположения элементов в исходном массиве), затем - элементы массива, целая часть которых - нечетное число (также с сохранением порядка взаимного расположения элементов в исходном массиве).

Вариант 2

Пусть задан одномерный массив вещественных чисел x[0], x[1], ... , x[n-1] (n - заданное натуральное число). Пусть задано целое неотрицательное число m < n. Требуется получить и распечатать элементы этого массива в следующем порядке: элементы x[0], x[1], ... , x[m-1] упорядочить по возрастанию, а элементы x[m], x[m+1], ... , x[n-1] - по убыванию.

Одномерные динамические массивы

Вариант 1

Задан одномерный массив целых чисел x, значения элементов которого лежат в интервале от 0 до 9. Получить новый массив y по правилу: продублировать в массиве y каждый элемент исходного массива x столько раз, чему равно значение элемента массива x. Оба массива разместить в динамической памяти.

Например: x: 3, 2, 1, 0, 5. y: 3, 3, 3, 1, 5, 5, 5, 5, 5.

Вариант 2

Задан одномерный массив целых чисел x. Получить новый массив y по правилу: удалить из массива x все повторяющиеся элементы, оставив по одному представителю.

Например: x: 3, 5, 8, 3, 1, 0, 0, 0, 1, 0, 6, 3, 2. y: 3, 5, 8, 1, 0, 6, 2.

Вариант 3

Задан одномерный массив целых чисел x. Получить новый массив y, включив в него все те и только те элементы массива x, которые встречаются в нем по одному разу.

Например: x: 3, 5, 8, 3, 1, 0, 0, 0, 1, 0, 6, 3, 2. y: 5, 8, 6, 2.

Вариант 4

Задан одномерный массив целых чисел x. Получить новый массив y по правилу: удалить из массива x все те его элементы, которые встречаются в нем только по одному разу.

Например: x: 3, 5, 8, 3, 1, 0, 0, 0, 1, 0, 6, 3, 2. y: 3, 3, 1, 0, 0, 0, 1, 0, 3.

Вариант 5

Заданы два одномерных числовых массива x и y, не обязательно равного размера. Получить новый массив z, включив в него все те элементы исходных массивов, которые встречаются как в первом, так и во втором массиве (без учета их возможного многократного повторения в каком-либо одном массиве или в обоих сразу). Все три массива разместить в динамической памяти.

Например: x: 3, 5, 8, 3, 1, 0, 0, 0, 1, 0, 6, 3, 2. y: 3, 3, 1, 7, 0, 0, 0, 1, 0, 3. z: 3, 1, 0.