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

C++ में चुनाव विजेता ढूंढना जहां वोट उम्मीदवार नामों के रूप में दर्शाए गए हैं


परिचय

इस ट्यूटोरियल में हम एक ऐसा प्रोग्राम लिखेंगे जो चुनाव विजेता ढूंढता है। हमारे पास एक सरणी होगी जिसमें प्रत्येक उम्मीदवार को मिले वोट होंगे। आइए एक उदाहरण देखते हैं।

इनपुट

{"A", "B", "C", "B", "A", "C", "D", "D", "A", "B", "D", "B", "A", "C", "D"}

आउटपुट

A

यहां, A और B को समान संख्या में वोट मिले। उस स्थिति में, हमें उनके नामों के वर्णमाला क्रम के आधार पर विजेता का चयन करना होगा।

समस्या समाधान के चरण

  1. स्ट्रिंग सरणी को डमी डेटा के साथ इनिशियलाइज़ करें।
  2. स्ट्रिंग को की और इंट को वैल्यू के साथ एक मैप इनिशियलाइज़ करें।
  3. वोट सरणी पर पुनरावृत्ति करें और प्रत्येक सदस्य के वोट गिनें। वोट काउंट स्टोर करने के लिए मैप का उपयोग करें।
  4. हमारे पास वोट काउंट है। चुनाव विजेता ढूंढने के लिए, मैप पर पुनरावृत्ति करें और अधिकतम वोट वाली की ढूंढें।
  5. यदि दो सदस्यों को समान वोट मिले, तो उनके नामों की जांच करें।
  6. विजेता प्रिंट करें।

उदाहरण कोड

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

void findElectionWinner(string votes[], int total_votes) {
    map<string, int> candidate_votes_count;
    // प्रत्येक व्यक्ति के वोट गिनना
    for (int i = 0; i < total_votes; i++) {
        candidate_votes_count[votes[i]]++;
    }
    // विजेता ढूंढना
    int max_votes = 0;
    string election_winner;
    for (auto& entry : candidate_votes_count) {
        string key = entry.first;
        int val = entry.second;
        // वोट की तुलना अधिकतम वोट से
        if (val > max_votes) {
            // अधिकतम वोट और सदस्य अपडेट करना
            max_votes = val;
            election_winner = key;
        }
        // यदि वोट समान हैं तो नाम की तुलना
        else if (val == max_votes && election_winner > key) {
            election_winner = key;
        }
    }
    cout << election_winner << endl;
}

int main() {
    string votes[] = {"A", "B", "C", "B", "A", "C", "D", "D", "A", "B", "D", "B", "A"};
    findElectionWinner(votes, 13);
    return 0;
}

आउटपुट

A

व्याख्या

A को 4 वोट मिले, B को 4 वोट मिले, C को 3, D को 2। टाई होने पर वर्णमाला क्रम में पहले आने वाला (A) विजेता होता है।

निष्कर्ष

मैप का उपयोग करके वोट गिनना O(n log n) समय में होता है। अनऑर्डर्ड_मैप का उपयोग करके इसे O(n) में किया जा सकता है। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।


  1. - C++ प्रोग्राम: मीडियन के निकटतम k नंबर खोजना

    यह C++ प्रोग्राम एक सेट S (n नंबर्स) के मीडियन (Median) के निकटतम k नंबर खोजता है। यह क्विकसॉर्ट द्वारा सॉर्टिंग के बाद मीडियन के दोनों ओर से निकटतम तत्व चुनता है। एल्गोरिदम शुरुआत 1. फंक्शन Partition() - हाई पर पिवट के आधार पर ऐरे पार्टीशन करें 2. फंक्शन QuickSort() - क्विकसॉर्ट एल्गोरिदम से

  1. - C++ प्रोग्राम: दो अलग-अलग सरणियों में संग्रहीत तत्वों की माध्यिका खोजें

    एल्गोरिदमMedian() फ़ंक्शन में दो सरणी a1[], a2[] और n = तत्वों की संख्या लें। i और j को 0 से प्रारंभ करें, n1 और n2 को -1 से। 0 से n तक लूप चलाएं: यदि i == n तो n1 = n2, n2 = a2[0], लूप तोड़ें। अन्यथा यदि j == n तो n1 = n2, n2 = a1[0], लूप तोड़ें। यदि a1[i] < a2[j] तो n1 = n2, n2 = a1[i], i बढ़ाएं।

  1. - वर्तमान C या C++ स्टैंडर्ड डॉक्यूमेंट्स कहां मिल सकते हैं?

    आप वर्तमान C स्टैंडर्ड डॉक्यूमेंट्स ANSI वेब स्टोर पर पा सकते हैं। https://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2FISO%2FIEC+9899-2012 आप वर्तमान C++ स्टैंडर्ड डॉक्यूमेंट्स खरीदने के लिए ISO C++ वेबसाइट पर पा सकते हैं: https://www.iso.org/standard/68564.html ISO C++ स्टैंडर्ड का वर्किंग ड्