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

C++ में सरणी तत्वों की आवृत्ति गणना


हमें पूर्णांक तत्वों की एक सरणी दी गई है जिसमें डुप्लिकेट मान हैं और कार्य सरणी में मौजूद विशिष्ट तत्वों की आवृत्तियों की गणना करना और परिणाम प्रिंट करना है।

इनपुट - int arr[] = {1, 1, 2, 3, 4, 1, 2, 3}

आउटपुट -

frequency of 1 is: 3
frequency of 2 is: 2
frequency of 3 is: 2
Frequency of 4 is: 1

उपयोग किया गया दृष्टिकोण

इसके कई समाधान हो सकते हैं और वे कोडिंग के संदर्भ में सरल हो सकते हैं या जटिलता के संदर्भ में सरल हो सकते हैं। आइए पहले कोडिंग के संदर्भ में सरल दृष्टिकोण को देखें

  • पूर्णांक प्रकार के चरों की एक सरणी बनाएं
  • size() फ़ंक्शन का उपयोग करके सरणी का आकार गणना करें।
  • सरणी आकार की एक बूलियन सरणी बनाएं, मान लीजिए check
  • i से 0 से आकार तक लूप FOR शुरू करें
  • लूप के अंदर, check[i] = 0 सेट करें
  • i से 0 से आकार तक लूप FOR शुरू करें
  • लूप के अंदर, जांचें IF check[i] == 1 तो जारी रखें
  • चर count घोषित करें और इसे 1 से आरंभ करें जो आवृत्ति गिनती प्रिंट करेगा
  • j से i+1 से आकार तक लूप FOR शुरू करें
  • लूप के अंदर, जांचें IF arr[i] == arr[j] तो check[j] = 1 सेट करें और काउंट को 1 से बढ़ाएं
  • काउंट का मान प्रिंट करें।

इसका एक और समाधान हो सकता है -

  • पूर्णांक प्रकार के चरों की एक सरणी बनाएं
  • size() फ़ंक्शन का उपयोग करके सरणी का आकार गणना करें।
  • unordered_map प्रकार का एक चर बनाएं, मान लीजिए um
  • i से 0 से आकार तक लूप FOR शुरू करें
  • लूप के अंदर, um[arr[i]]++ सेट करें
  • auto x से um तक एक और लूप शुरू करें
  • लूप के अंदर, आवृत्ति प्रिंट करें।

उदाहरण 1

#include <bits/stdc++.h>
using namespace std;

int frequency(int arr[], int size) {
    bool check[size];
    for (int i = 0; i < size; i++) {
        check[i] = 0;
    }
    for (int i = 0; i < size; i++) {
        if (check[i] == 1) {
            continue;
        }
        int count = 1;
        for (int j = i + 1; j < size; j++) {
            if (arr[i] == arr[j]) {
                check[j] = 1;
                count++;
            }
        }
        cout << "frequency of " << arr[i] << " is: " << count << endl;
    }
}

int main() {
    int arr[] = {1, 2, 3, 1, 2, 3};
    int size = sizeof(arr) / sizeof(arr[0]);
    frequency(arr, size);
    return 0;
}

आउटपुट

frequency of 1 is: 2
frequency of 2 is: 2
frequency of 3 is: 2

उदाहरण 2 (unordered_map दृष्टिकोण)

#include <bits/stdc++.h>
using namespace std;

void frequency(int arr[], int size) {
    unordered_map<int, int> um;
    for (int i = 0; i < size; i++) {
        um[arr[i]]++;
    }
    for (auto x : um) {
        cout << "frequency of " << x.first << " is: " << x.second << endl;
    }
}

int main() {
    int arr[] = {1, 2, 3, 1, 2, 3};
    int size = sizeof(arr) / sizeof(arr[0]);
    frequency(arr, size);
    return 0;
}

आउटपुट

frequency of 3 is: 2
frequency of 1 is: 2
frequency of 2 is: 2
  1. C++ में सरणी के एलिमेंट्स का गुणनफल C++ में सरणी के एलिमेंट्स का गुणनफल

    पूर्णांक एलिमेंट्स की एक सरणी दी गई है और कार्य सरणी के एलिमेंट्स को गुणा करना और प्रदर्शित करना है। उदाहरण इनपुट-: arr[]={1,2,3,4,5,6,7} आउटपुट-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 इनपुट-: arr[]={3, 4,6, 2, 7, 8, 4} आउटपुट-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 नीचे दिए गए प्रोग्राम में उपयोग किया गया द

  1. - C++ प्रोग्राम: काउंटिंग सॉर्ट लागू करना

    काउंटिंग सॉर्ट एक स्थिर सॉर्टिंग तकनीक है, जिसका उपयोग छोटी संख्याओं की कुंजियों के अनुसार ऑब्जेक्ट्स को सॉर्ट करने के लिए किया जाता है। यह उन कुंजियों की संख्या गिनता है जिनके कुंजी मान समान हैं। यह सॉर्टिंग तकनीक तब कुशल होती है जब विभिन्न कुंजियों के बीच अंतर इतना बड़ा नहीं होता, अन्यथा यह स्पेस

  1. - C++ में पॉइंटर का उपयोग करके सरणी के एलिमेंट्स एक्सेस करने का प्रोग्राम

    पॉइंटर्स वेरिएबल्स के मेमोरी स्थान या पते को संग्रहीत करते हैं। दूसरे शब्दों में, पॉइंटर्स एक मेमोरी स्थान को संदर्भित करते हैं और उस मेमोरी स्थान पर संग्रहीत मान को प्राप्त करना पॉइंटर को डीरेफरेंस करना कहलाता है। एक प्रोग्राम जो सरणी के एकल एलिमेंट को एक्सेस करने के लिए पॉइंटर्स का उपयोग करता है,