Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

정렬되지 않은 두 배열의 합집합과 교집합을 찾는 C++ 프로그램

<시간/>

이 기사에서는 정렬되지 않은 두 배열의 합집합과 교집합을 찾는 프로그램에 대해 설명합니다.

두 배열을 'A'와 'B'로 표시합시다. 그런 다음 해당 배열의 합집합은 A ∪ B 로 표시됩니다. 이것은 기본적으로 주어진 두 배열에 있는 모든 요소의 배열입니다. 단, 각 요소는 한 번만 반복됩니다.

이를 찾기 위해 별도의 배열을 만들고 첫 번째 배열의 모든 요소를 ​​복사합니다. 그런 다음 두 번째 배열의 요소를 탐색하고 이것이 이미 Union 배열에 있는지 확인합니다. 그렇지 않은 경우 유니온 배열에 추가합니다.

마찬가지로 두 배열의 교집합은 A ∩ B로 표시됩니다. 주어진 두 배열에 모두 존재하는 요소의 배열입니다.

이를 위해 첫 번째 배열의 요소를 하나씩 탐색합니다. 동시에 해당 요소가 두 번째 배열에 있는지 여부를 확인합니다. 요소가 두 배열에 모두 있으면 교차 배열에 추가합니다.

예시

#include <iostream>
using namespace std;
int main() {
   int len1 = 4, len2 = 3, flag1 = 0, flag2 = 0;
   int array1[len1] = {1,2,3,4}, array2[len2] = {5,3,4};
   int uni[len1+len2] = {1,2,3,4}, inter[len1];
   for(int k = 0; k < len2 ; k++) {
      flag1 = len1;
      for(int m = 0; m < len1; m++) {
         //eliminating common elements among the given arrays
         if(array2[k] == uni[m])
            break;
         else if(m == len1-1) {
            uni[flag1] = array2[k];
            flag1 = flag1+1;
         }
      }
   }
   for(int q = 0; q < len1; q++) {
      for(int w = 0; w < len2; w++) {
         //checking if both arrays contain a particular element
         if(array1[q] == array2[w]) {
            inter[flag2] = array1[q];
            flag2 = flag2+1;
            break;
         }
      }
   }
   cout << "Union :" <<endl;
   for(int u = 0; u < flag1; u++) {
      cout << uni[u] << " ";
   }
   cout << "\nIntersection :" <<endl;
   for(int i = 0; i < flag2; i++) {
      cout << inter[i] << " ";
   }
   return 0;
}

출력

Union :
1 2 3 4
Intersection :
3 4