আমাদের দুটি অ্যারে রয়েছে, কাজটি হল দুটি অ্যারে তুলনা করা এবং C++ এ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL) ব্যবহার করে প্রথম অ্যারেতে উপস্থিত সংখ্যাগুলি খুঁজে বের করা কিন্তু দ্বিতীয় অ্যারেতে নয়৷
উদাহরণ
Input: array1[ ] = {1,2,3,4,5,7} array2[ ] = {2,3,4,5,6,8} Output: 1, 7 Input: array1[ ] = {1,20,33,45,67} array2[ ] = {1,12,13,114,15,13} Output: 20,33,45,67
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি হল অনুসরণ করে -
- এই প্রোগ্রামে আমরা সেই উপাদানগুলি খুঁজে পেতে চাই যা প্রথম অ্যারেতে উপস্থিত কিন্তু দ্বিতীয় অ্যারেতে নেই৷
- এটি করার জন্য আমরা প্রথমে দুটি ভেরিয়েবল শুরু করি। এখন আমরা অ্যারে 1 তে থাকা উপাদানগুলি খুঁজে বের করার জন্য "ফাইন্ড" নামে একটি ফাংশন তৈরি করব এবং অ্যারে 2-এ নেই৷
- ফাংশনে আমরা একটি ভেক্টর ঘোষণা করব (ভেক্টরগুলি একটি উপাদান সন্নিবেশিত বা মুছে ফেলার সময় স্বয়ংক্রিয়ভাবে আকার পরিবর্তন করার ক্ষমতা সহ গতিশীল অ্যারেগুলির মতো।) ফলাফল সংরক্ষণ করতে এবং আমরা ভেক্টর অতিক্রম করার জন্য একটি পুনরাবৃত্তিকারী ঘোষণা করব।
- এখন আমরা সেট_ডিফারেন্স( ) পদ্ধতি ব্যবহার করে অ্যারেগুলিকে বাছাই করব এবং অনুপস্থিত উপাদানগুলি খুঁজে বের করব, এবং ফলাফল অনুসারে ভেক্টরের আকার পরিবর্তন করব এবং মানগুলি সংরক্ষণ করব এবং তারপরে সমাধানটি প্রিন্ট করব
স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরিতে (STL), আমরা "array1-array2" খুঁজে পেতে set_difference( ) পদ্ধতি ব্যবহার করতে পারি। দুটি সেটের পার্থক্য প্রথম সেটে উপস্থিত উপাদানগুলির দ্বারা গঠিত হয়, কিন্তু দ্বিতীয়টিতে নয়। ফাংশন দ্বারা অনুলিপি করা উপাদানগুলি সর্বদা প্রথম পরিসর থেকে একই ক্রমে আসে। উভয় রেঞ্জের উপাদানগুলি ইতিমধ্যেই অর্ডার করা হবে৷
৷সিনট্যাক্স
set_difference() এর জন্য সিনট্যাক্স হল −
OutputIterator set_difference (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result);
অ্যালগরিদম
Start Step 1-> Create function for finding missing elements void find(int array1[], int array2[], int x, int y) Declare a vector which stores the result as vector<int> v(x + y) Declare an iterator traverse the vector as vector<int>::iterator it Sort the arrays sort array1 and sort array2 End Find the missing elements diff = set_difference(array1, array1 + x, array2, array2 + y, v.begin()) resize the vector to the existing count v.resize(diff - v.begin()) print the elements present in array1[] and not in array2[] for (diff = v.begin() diff != v.end() ++diff Print *diff End Step 2-> In main() Declare array as int array1and int array2 Declare variable x and y to calculate the size of array1 and array 2 as int x = size of array1 and int y = size of array2 Call the function as find(array1, array2, x, y)
উদাহরণ
#include <bits/stdc++.h> using namespace std; int main() { int array1[] = { 1, 2, 3, 4, 5, 7 }; int array2[] = { 2, 3, 4, 5, 6, 8 }; int x = sizeof(array1) / sizeof(array1[0]); int y = sizeof(array2) / sizeof(array2[1]); find(array1, array2, x, y); return 0; } // Creating function named “find” for finding missing elements void find(int array1[], int array2[], int x, int y) { // Declaring a vector which stores the result vector<int> v(x + y); // Declaring an iterator traverse the vector vector<int>::iterator it; // Sorting the arrays sort(array1, array1 + x); sort(array2, array2 + y); // Finding the missing elements diff = set_difference(array1, array1 + x, array2, array2 + y, v.begin()); //resizing the vector to the existing count v.resize(diff - v.begin()); cout << "The elements present in array1[] and not in array2[]:”; for (diff = v.begin(); diff != v.end(); ++diff) cout << *diff << " "; cout << endl; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেThe elements present in array1[] and not in array2[]: 1,7