इंटरसेक्शन ऑपरेशन
यदि सरणी 1 = { 1,2,3,4,6}
सरणी 2 = {1,2,5,6,7}
तब, सरणी1 और सरणी 2 का इंटरसेक्शन है
Array1 ^ array 2 = {1,2,3,4,6} ^ {1,2,5,6,7} = {1,2,6}
सामान्य तत्वों का सेट इंटरसेक्शन कहलाता है।
इंटरसेक्शन के लिए तर्क निम्नानुसार है:
k = 0;
for(i = 0; i < size1; i++){
for(j = 0; j < size2; j++){
if(a[i] == b[j]){
intersection[k] = a[i];
k++;
}
}
}
प्रोग्राम
निम्नलिखित C प्रोग्राम दो सरणियों पर इंटरसेक्शन ऑपरेशन करता है:
#include <stdio.h>
int removerepeated(int size, int a[]);
void sort(int size, int a[]);
main(){
int i, size1, size2, size, j = 0, k, intersectionsize;
printf("Enter size of an array1\n");
scanf("%d", &size1);
printf("Enter size of an array2\n");
scanf("%d", &size2);
int a[size1], b[size2], uni[size1+size2];
if(size1 < size2){
intersectionsize = size1;
}else if(size1 > size2){
intersectionsize = size2;
}else{
intersectionsize = size1;
}
int intersection[intersectionsize];
printf("Enter numbers for array 1\n");
for(i = 0; i < size1; i++){
scanf("%d", &a[i]);
}
printf("Enter numbers for array 2\n");
for(i = 0; i < size2; i++){
scanf("%d", &b[i]);
}
// Intersection starts
k = 0;
for(i = 0; i < size1; i++){
for(j = 0; j < size2; j++){
if(a[i] == b[j]){
intersection[k] = a[i];
k++;
}
}
}
// Sorting
sort(k, intersection);
// Removing
size = removerepeated(k, intersection);
printf("Array after intersection\n");
if(size > 0){
for(i = 0; i < size; i++){
printf("%d\n", intersection[i]);
}
}else{
printf("No intersection\n");
}
}
int removerepeated(int size, int a[]){
int i, j, k;
for(i = 0; i < size; i++){
for(j = i+1; j < size; ){
if(a[i] == a[j]){
for(k = j; k < size; k++){
a[k] = a[k+1];
}
size--;
}else{
j++;
}
}
}
return(size);
}
void sort(int size, int a[]){
int i, j, temp;
for(i = 0; i < size; i++){
for(j = i+1; j < size; j++){
if(a[i] > a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
आउटपुट
Enter size of an array1 5 Enter size of an array2 2 Enter numbers for array 1 4 5 6 7 8 Enter numbers for array 2 4 1 Array after intersection 4