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

C++ में दिए गए सरणियों से सम और विषम तत्वों का गायब होना

समस्या कथन

दो पूर्णांक सरणियों को भी [] और विषम [] दिया गया है जिसमें क्रमशः सम और विषम तत्व होते हैं, जिनमें से प्रत्येक सरणी से एक तत्व गायब होता है। कार्य लापता तत्वों को ढूंढना है।

उदाहरण

If even[] = {10, 8, 6, 16, 12} and
odd[] = {3, 9, 13, 7, 11} then
missing number from even array is 14 and from odd array is 5.

एल्गोरिदम

  • सम [] सरणी से न्यूनतम और अधिकतम सम तत्वों को minEven और maxEven में संग्रहीत करें
  • पहली N सम संख्याओं का योग N * (N + 1) है। 2 से लेकर न्यूनतम तक सम संख्याओं के योग की गणना करें, यहां तक ​​​​कि योग 1 और सम संख्याओं का योग 2 से अधिकतम तक सम संख्याओं का योग सम2 भी कहें
  • सम सरणी का आवश्यक योग होगा reqSum =sum2 - sum1 + minEven, इस reqSum से सम [] सरणी योग घटाना हमें लापता सम संख्या देगा
  • इसी प्रकार, लुप्त विषम संख्या भी ज्ञात की जा सकती है क्योंकि हम जानते हैं कि पहली N विषम संख्याओं का योग N2 है

उदाहरण

#include <bits/stdc++.h>
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++ में विषम और सम संख्या वाले सभी स्तरों को प्रिंट करें

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

  1. सी ++ में एक ऐरे में सम और विषम अनुक्रमित तत्वों का पूर्ण अंतर?

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

  1. एक ऐरे (सी++) में सम और विषम अनुक्रमित तत्वों का पूर्ण अंतर?

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