Создать третий массив, в котором нужно собрать общие элементы двух массивов - C (СИ)
Формулировка задачи:
Даны два массива: A[n] и B[n]. Необходимо создать третий массив, в котором нужно собрать общие элементы двух массивов. Для работы с массивами используйте указатели.
Все работает. Только как сделать проверку, если общих чисел несколько, чтоб они не писались в третий массив?
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "rus");
srand(time(NULL));
const int size1 = 6;
const int size2 = 8;
int mas1[size1], mas2[size2];//создаем 2 массива
int *ptr1 = &mas1[0];//создаем указатели на массивы
int *ptr2 = &mas2[0];
printf("Первый массив:\n");
for (int i = 0; i<size1; i++)
{
*(ptr1 + i) = rand() % 10;
printf("%d ", ptr1[i]);
}
printf("\n");
printf("Второй массив:\n");
for (int i = 0; i<size2; i++)
{
*(ptr2 + i) = rand() % 10;
printf("%d ", ptr2[i]);
}
printf("\n");
int mas3[size1 + size2];//создаем третий массив
int *ptr3 = &mas3[0];
int temp = 0;//переменная для записи элементов в массив
for (int i = 0; i<size1; i++)
{
for (int j = 0; j<size2; j++)
{
if (*(ptr1 + i) == *(ptr2 + j))//если значения в массивах равны, то пишем их в третий массив
{
*(ptr3 + temp) = *(ptr1 + i);
temp++;
break;
}
}
}
printf("третий массив:\n");
for (int i = 0; i<temp; i++)
{
printf("%d ", ptr3[i]);
}
printf("\n");
return 0;
}Решение задачи: «Создать третий массив, в котором нужно собрать общие элементы двух массивов»
textual
Листинг программы
int mas3[size1 + size2];//создаем третий массив
Объяснение кода листинга программы
- В первой строке кода создается третий массив с названием
mas3. - Размер этого массива определяется как сумма размеров двух других массивов, которые обозначены переменными
size1иsize2. - Значение переменной
size1равно 5, а значение переменнойsize2равно 3. - Таким образом, размер массива
mas3будет равен 5 + 3 = 8. - Массив
mas3инициализируется нулевыми значениями.