Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में पहली सरणी में मौजूद लेकिन दूसरी में नहीं मौजूद तत्वों की गिनती करें


हमें किसी भी आकार की एक सरणी दी गई है जिसमें पूर्णांक तत्व हैं और कार्य उन तत्वों की संख्या की गणना करना है जो पहली सरणी में मौजूद हैं लेकिन दूसरी सरणी में नहीं।

सरणी एक प्रकार की डेटा संरचना है जो एक ही प्रकार के तत्वों का एक निश्चित आकार का अनुक्रमिक संग्रह संग्रहीत कर सकती है। एक सरणी का उपयोग डेटा के संग्रह को संग्रहीत करने के लिए किया जाता है, लेकिन एक सरणी को एक ही प्रकार के चरों के संग्रह के रूप में सोचना अक्सर अधिक उपयोगी होता है।

उदाहरण के लिए

इनपुट- int arr_1[] = {1, 2, 3, 4}       Int arr_2[] = {1, 5, 6, 7, 8} आउटपुट - गिनती 3 है

व्याख्या - दी गई arr_1 में हमारे पास तत्व 1, 2, 3 और 4 हैं और arr_2 में हमारे पास 1, 5, 6, 7 और 8 हैं। तत्व 1 दोनों सरणियों में मौजूद है इसलिए, हम इसे नहीं गिनेंगे और इसलिए गिनती 3 हो जाती है।

इनपुट - int arr_1[] = {10, 20, 30, 40, 50}       Int arr_2[] = {10, 20, 30, 60} आउटपुट - गिनती 2 है

व्याख्या - दी गई arr_1 में हमारे पास तत्व 10, 20, 30, 40 और 50 हैं और arr_2 में हमारे पास 10, 20, 30 और 60 हैं। तत्व 10, 20 और 30 दोनों सरणियों में मौजूद हैं इसलिए, हम उन्हें नहीं गिनेंगे और इसलिए गिनती 2 हो जाती है।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • दो सरणियाँ बनाएं, मान लीजिए arr_1[] और arr_2[]

  • length() फंक्शन का उपयोग करके दोनों सरणियों की लंबाई की गणना करें जो सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।

  • एक अस्थायी चर लें जो केवल पहली सरणी में मौजूद तत्वों की गिनती को संग्रहीत करेगा।

  • एक अनऑर्डर्ड मैप बनाएं, मान लीजिए up

  • i को 0 से शुरू करके i के arr_1 के आकार से कम होने तक लूप शुरू करें

  • up[arr_1[i]] को 1 से बढ़ाएं

  • i को 0 से शुरू करके i के arr_2 के आकार से कम होने तक एक और लूप शुरू करें

  • लूप के अंदर, जांचें कि क्या up.find(arr_2[i])!=up.end() और up[arr_2[i]]!=0 है

  • up[arr_2[i]] को 1 से घटाएं

  • i को 0 से शुरू करके i के arr_1 के आकार से कम होने तक एक और लूप शुरू करें

  • लूप के अंदर, जांचें कि क्या up[arr_1[i]!=0 है

  • फिर, count को 1 से बढ़ाएं और up[arr_1[i]] = 0 सेट करें

  • count लौटाएं

  • परिणाम प्रिंट करें।

उदाहरण

#include <iostream>
#include<unordered_map>
using namespace std;

int elements_count(int arr_1[], int arr_2[], int m, int n) {
    bool f = false;
    int result = 0;
    // a में मौजूद तत्वों की आवृत्ति संग्रहीत करने के लिए मैप
    unordered_map<int, int> up;
    for (int i = 0; i < m; i++) {
        up[arr_1[i]]++;
    }
    // जांचें कि क्या b के तत्व
    // b में मौजूद हैं या नहीं
    for (int i = 0; i < n; i++)
        if (up.find(arr_2[i]) != up.end() && up[arr_2[i]] != 0) {
            up[arr_2[i]]--;
        }
    // उन तत्वों की गिनती करें जिनकी आवृत्ति b से अधिक है
    for (int i = 0; i < m; i++) {
        if (up[arr_1[i]] != 0) {
            result++;
            up[arr_1[i]] = 0;
        }
    }
    return result;
}

// मुख्य फंक्शन
int main() {
    int arr_1[] = {2, 4, 4, 6, 6, 6, 8, 9};
    int arr_2[] = {2, 2, 4, 6, 6};
    int m = sizeof(arr_1) / sizeof(arr_1[0]);
    int n = sizeof(arr_2) / sizeof(arr_2[0]);
    cout << "count is " << elements_count(arr_1, arr_2, m, n);
    return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्नलिखित आउटपुट मिलेगा -

count is 4

  1. - C++ प्रोग्राम: सरणी में पहला, दूसरा और तीसरा न्यूनतम तत्व ज्ञात करना

    मान लें हमारे पास n तत्वों की एक सरणी है। हमें सरणी में पहला, दूसरा और तीसरा न्यूनतम तत्व ज्ञात करना है। पहला न्यूनतम सरणी का न्यूनतम है, दूसरा न्यूनतम न्यूनतम है लेकिन पहले से बड़ा, और इसी तरह तीसरा न्यूनतम न्यूनतम है लेकिन दूसरे न्यूनतम से बड़ा। प्रत्येक तत्व को स्कैन करें, फिर तत्व की जांच करें,

  1. - C++ प्रोग्राम: वे तत्व ज्ञात करना जो पहली सरणी में हैं लेकिन दूसरी में नहीं

    मान लें हमारे पास दो सरणी A और B हैं। कुछ तत्व हैं। हमें वे तत्व ज्ञात करने हैं जो सेट A में मौजूद हैं, लेकिन सेट B में नहीं। यदि हम उस स्थिति के बारे में सोचते हैं, और A और B को सेट मानते हैं, तो यह मूल रूप से सेट विभाजन ऑपरेशन है। A और B के बीच सेट अंतर उन तत्वों को लौटाएगा। उदाहरण #include <i

  1. - C++ प्रोग्राम: सरणी में इनवर्जन गिनें

    परिचयइनवर्जन काउंट का अर्थ है सरणी को सॉर्ट करने के लिए आवश्यक स्वैप की संख्या। यदि सरणी सॉर्टेड है तो इनवर्जन काउंट = 0। यदि सरणी रिवर्स ऑर्डर में सॉर्टेड है तो इनवर्जन काउंट = अधिकतम।एल्गोरिदम a[j] तो काउंट 1 बढ़ाएं। अंत में काउंट लौटाएं।उदाहरण कोड#include <iostream> using namespace std; in