View difference between Paste ID: JTicaLwb and 5neNCCHS
SHOW: | | - or go back to the newest paste.
1
#include <stdio.h>
2
#include <time.h>
3
#include <stdlib.h>
4
5
const int ARR_SIZE = 5;
6
7
void fillArr(int arr[], int size);
8
int Intersect(int arr1[], int arr2[], int sum_size, int *res);
9
void showArr(int *res, int size);
10
11
int main()
12
{
13
	srand(time(NULL));
14
	int arr1[ARR_SIZE]; // объявляем массивы, указатель на массив результата
15
	int arr2[ARR_SIZE];
16
	int result[ARR_SIZE + 1];
17
	int *ptr = result;
18
	int i = 0;
19
	fillArr(arr1, ARR_SIZE); fillArr(arr2, ARR_SIZE); // заполняем массивы случайными числами
20
	printf("First array: \n");
21
	for (i; i < ARR_SIZE; i++) // выводим массивы на экран
22
	{
23
		printf("%d", arr1[i]);
24
		printf("\n");
25
	}
26
	printf("Second array: \n");
27
	for (i = 0; i < ARR_SIZE; i++)
28
	{
29
		printf("%d", arr2[i]);
30
		printf("\n");
31
	}
32
	int sum = 2 * ARR_SIZE;
33
	int size = Intersect(arr1, arr2, sum, ptr); // находим пересечения, изменяем массив результата по указателю, возвращаем место, до которого выводим массив результата (size)
34-
	for (i = 1; i < size; i++)
34+
35
	showArr(ptr, size);
36-
		printf("%d\n", result[i]); // выводим массив
36+
37
	return 0;
38
}
39
40
void fillArr(int arr[], int size)
41
{
42
	int i = 0;
43
	for (i = 0; i < size; i++)
44
	{
45
		arr[i] = rand() % 5; // присваиваем части массива числа от 0 до 5
46
	}
47
}
48
49
int Intersect(int arr1[], int arr2[], int sum_size, int *res)
50
{
51
	int i = 0;
52
	int size = 0;
53
	int count = 0;
54
	short bad_num = 0;
55
	for (i = 0; i < ARR_SIZE; i++)
56
	{
57
		int j = 0;
58
		int isBad = 0;
59
		for (j = 0; j < ARR_SIZE; j++)
60
		{
61
			if (arr1[i] == arr2[j]) // если одно из чисел первого массива равно хоть одному числу второго, то:
62
			{
63-
			if (arr1[i] == arr2[j]) // если одно из чисел первого массива равно хоть одному числу второг, то:
63+
64
					res[size] = arr1[i];
65-
				int x = 0;
65+
66-
				for (x; x < ARR_SIZE; x++)
66+
67-
				{
67+
68-
					if (res[x] == arr1[i]) // если в массиве результатов уже есть такое число, то исключаем данный результат из вывода
68+
69-
					{
69+
70-
						isBad = 1;
70+
71-
					}
71+
void showArr(int *res, int size) // простая функция для показа массива без повторяющихся элементов
72-
				}
72+
73-
				if (isBad != 1) // если все проверки прошли, то добавляем в результат элемент массива
73+
74-
				{
74+
	int j = 0;
75
	int count = 0;
76
	    for (i = 1; i < size; i++)
77-
				}
77+
    { 
78
        int temp = res[i]; 
79
        for (j = 1; j < size; j++) 
80
            if (temp == res[j])
81
                count++; 
82
        if (count == 1) 
83
            printf("%d ", temp);
84
        count = 0; 
85
    }  
86
}