Qn: Write a C program to print intersection(common elements only one times) of two arrays.
-By Madhavan, Last Update On 28th May,2019 01:23 pm

Intersection - Common elements from two arrays

இரண்டு array-ல் உள்ள பொதுவான(common) elements தனியாக எடுத்து print செய்யவேண்டும். இரண்டு array-விழும் ஒரு common element எத்தனை முறை வேண்டுமானாலும் திரும்ப திரும்ப வந்திருக்கலாம் ஆனால் print செய்யும்போது ஒரே ஒரு முறை மட்டும்தான் print செய்யவேண்டும். இதுவே intersection என்று அழைக்கபடுகிறது.

How to get common elements only form two arrays

இரண்டு array-ல் உள்ள ஒவ்வொரு element-ஐயும், ஒன்றோடுடொன்று compare செய்யவேண்டுமெனில், எப்பொழுதும் இரண்டு array-ல் எந்த array-ன் elements குறைவாக உள்ளதோ அந்த array-வை முதல் for() loop-ல் எடுத்துகொள்ள வேண்டும். அதிகமாக elements உள்ளதை முதல் for() loop-ன் உள்ளே inner for() loop-ல் எடுத்துகொள்ளவேண்டும்.

2-வது for() loop-ல் arrayA-ன் ஒரு element-ஐ எடுத்துக்கொண்டு, arrayB-ல் உள்ள அனைத்து element-ஐயும் ஒன்றோடுடொன்று சமமாக உள்ளதா என்று சரிபார்க்கவேண்டும். ஒருவேலை சமமாக இருந்தால் அந்த element common element ஆகும். இந்த common element-ஐ புதிய array-ல் சேர்க்கவேண்டும். இவ்வாறு common elements அனைத்தையும் arrayC-ல் சேர்த்துகொண்டே இருக்க வேண்டும்.

இதற்கு முன்பாக சேர்க்கக்கூடிய ஒவ்வொரு புதிய element-ம், arrayC-ல் ஏற்க்கனவே உள்ளதா என்று check செய்யவேண்டும். அவ்வாறு இருந்தால் அது repeated common element ஆகும். அதை skip செய்து விடவேண்டும் இதற்காகத்தான் 3-வது for loop பயன்படுத்தபடுகிறது.

இப்பொழுது 2-வது for() loop-ஐ break கொடுத்து நிறுத்த வேண்டும். ஏனெனில் இதற்க்கு பின் common element-ஐ கண்டுபிடித்தாலும் அது repeated common element ஆகும்.

மேற்கண்ட அனைத்தும் முதல் for() loop-ன் உள்ளே நடைபெறுகிறது. ஆகையால் முதல் for() loop முடிந்த உடன் அனைது common element-களும் arrayC-ல் சேர்க்கப்பட்டு இருக்கும். இப்பொழுது count-ன் value எதனை உள்ளதோ அதுவரைக்கும் arrayC-ஐ print செய்தால் போதும். ஏனெனில் count-ஆனது arrayC-ல் value சேர்க்கப்பட்ட உடன் increase செய்யபடுகிறது. ஆகையால் count-ல் எவ்வளவு value உள்ளதோ அத்துனை element மட்டுமே arrayC-ல் சேர்க்கப்பட்டு இருக்கும். அதற்குமேல் print செய்தால் அனைத்து element-ம் 0-ஆக தான் இருக்கும்.

#include<stdio.h>
#include<conio.h>
int main(){
  int arrayA[] = {1, 2, 2, 3, 4, 5, 6, 7};
  int arrayB[] = {8, 2, 5, 0, 2, 1, 3, 7, 9};
  int lengthA=sizeof(arrayA)/sizeof(int);
  int lengthB=sizeof(arrayB)/sizeof(int);
  int arrayC[lengthA];
  int count = 0, i, j, k,t;
  for (i = 0; i < lengthA; i++) {
    for (j = 0; j < lengthB; j++) {
      if (arrayA[i] == arrayB[j]) {
      // checks  common element "arrayA[i]"
      //is already exist in arrayC
        for (k = 0; k < count; k++) {
          if (arrayA[i] == arrayC[k]) {
              break;
          }
        }
        if (k == count) {
          arrayC[count] = arrayA[i];
          count++;
        }
        break;
      }  
    }
  }
  printf("Common elements are:");
  for (t=0;t<count;t++) {
      printf(" %d " , arrayC[t]);
  }
return 0;
}
Output:
Common elements are: 1 2 3 5 7

Pgcomments

Comments