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

C++ में दिए गए ऐरे से मिसिंग इवन और ऑड एलिमेंट्स


समस्या कथन

दो पूर्णांक ऐरे even[] और odd[] दिए गए हैं जिनमें क्रमशः लगातार इवन और ऑड एलिमेंट्स हैं, प्रत्येक ऐरे से एक एलिमेंट मिसिंग है। कार्य मिसिंग एलिमेंट्स को ढूंढना है।

उदाहरण

यदि even[] = {10, 8, 6, 16, 12} और odd[] = {3, 9, 13, 7, 11} तो इवन ऐरे से मिसिंग नंबर 14 है और ऑड ऐरे से 5 है।

एल्गोरिदम

  • even[] ऐरे से न्यूनतम और अधिकतम इवन एलिमेंट्स को वेरिएबल्स minEven और maxEven में स्टोर करें
  • पहले N इवन नंबरों का योग N * (N + 1) होता है। 2 से minEven तक के इवन नंबरों का योग sum1 और 2 से maxEven तक के इवन नंबरों का योग sum2 निकालें
  • इवन ऐरे का आवश्यक योग reqSum = sum2 - sum1 + minEven होगा, इस reqSum से even[] ऐरे के योग को घटाने पर हमें मिसिंग इवन नंबर मिल जाएगा
  • इसी तरह, मिसिंग ऑड नंबर भी ढूंढा जा सकता है क्योंकि हम जानते हैं कि पहले N ऑड नंबरों का योग N² है

उदाहरण

#include 
using namespace std;

void findMissingNums(int even[], int sizeEven, int odd[], int sizeOdd) {
    int minEven = INT_MAX;
    int maxEven = INT_MIN;
    int minOdd = INT_MAX;
    int maxOdd = INT_MIN;
    int sumEvenArr = 0, sumOddArr = 0;
    for (int i = 0; i < sizeEven; i++) {
        minEven = min(minEven, even[i]);
        maxEven = max(maxEven, even[i]);
        sumEvenArr += even[i];
    }
    for (int i = 0; i < sizeOdd; i++) {
        minOdd = min(minOdd, odd[i]);
        maxOdd = max(maxOdd, odd[i]);
        sumOddArr += odd[i];
    }
    int totalTerms = 0, reqSum = 0;
    totalTerms = minEven / 2;
    int evenSumMin = totalTerms * (totalTerms + 1);
    totalTerms = maxEven / 2;
    int evenSumMax = totalTerms * (totalTerms + 1);
    reqSum = evenSumMax - evenSumMin + minEven;
    cout << "Missing even number = " << reqSum - sumEvenArr << "\n";
    totalTerms = (minOdd / 2) + 1;
    int oddSumMin = totalTerms * totalTerms;
    totalTerms = (maxOdd / 2) + 1;
    int oddSumMax = totalTerms * totalTerms;
    reqSum = oddSumMax - oddSumMin + minOdd;
    cout << "Missing odd number = " << reqSum - sumOddArr << "\n";
}

int main() {
    int even[] = {10, 8, 6, 16, 12};
    int sizeEven = sizeof(even) / sizeof(even[0]);
    int odd[] = {3, 9, 13, 7, 11};
    int sizeOdd = sizeof(odd) / sizeof(odd[0]);
    findMissingNums(even, sizeEven, odd, sizeOdd);
    return 0;
}

जब आप उपरोक्त प्रोग्राम को कंपाइल और 실행 करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -

आउटपुट

Missing even number = 14
Missing odd number = 5

  1. C++ में विषम और सम संख्या में नोड्स वाले सभी स्तर प्रिंट करें C++ में विषम और सम संख्या में नोड्स वाले सभी स्तर प्रिंट करें

    इस समस्या में, हमें एक ट्री दिया गया है। और हमें उन सभी स्तरों को प्रिंट करना है जिनमें सम संख्या में नोड्स और विषम संख्या में नोड्स हैं। अवधारणा को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं आउटपुट - विषम संख्या में नोड्स वाले स्तर: 1, 3, 4 सम संख्या में नोड्स वाले स्तर: 2 व्याख्या - पहले स्तर म

  1. - C++ में एरे में सम और विषम इंडेक्स वाले तत्वों का निरपेक्ष अंतर

    एक एरे समान डेटा प्रकार के कई तत्वों का एक कंटेनर है। तत्वों का इंडेक्स 0 से शुरू होता है यानी पहले तत्व का इंडेक्स 0 होता है। इस समस्या में, हमें दो सम इंडेक्स वाली संख्या और दो विषम इंडेक्स वाली संख्या के बीच निरपेक्ष अंतर ज्ञात करना है। सम इंडेक्स वाली संख्या = 0,2,4,6,8... विषम इंडेक्स वाली संख

  1. - C++ में ऐरे के सम और विषम इंडेक्स वाले तत्वों का निरपेक्ष अंतर

    यहां हम देखेंगे कि ऐरे में सम और विषम इंडेक्स वाले तत्वों के निरपेक्ष अंतर कैसे प्राप्त करें। निरपेक्ष अंतर इंगित करता है कि यदि किसी जोड़े का अंतर ऋणात्मक है, तो निरपेक्ष मान लिया जाएगा। उदाहरण के लिए, संख्याएं हैं {1, 2, 3, 4, 5, 6, 7, 8, 9}। तो सम स्थान वाले तत्व हैं 1, 3, 5, 7, 9 (0 से शुरू), और