Advertisement
Guest User

Untitled

a guest
Feb 28th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.     printf("Result: \n");
  35.     showArr(ptr, size);
  36.     getchar(); // чтобы окно не закрылось сразу в OS Windows
  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.                     size++;
  64.                     res[size] = arr1[i];
  65.             }
  66.         }
  67.     }
  68.     return size;
  69. }
  70.  
  71. void showArr(int *res, int size) // простая функция для показа массива без повторяющихся элементов
  72. {
  73.     int i = 0;
  74.     int j = 0;
  75.     int count = 0;
  76.         for (i = 1; i < size; i++)
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement