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

C++ में वैकल्पिक रूप से बढ़ते और घटते क्रम में सरणी तत्वों को प्रिंट करें

इस समस्या में, हमें संख्या की एक सरणी दी जाती है और हमें प्रिंट करते समय वैकल्पिक रूप से बढ़ते और घटते क्रम में सरणी के तत्वों को प्रिंट करना होता है। वैकल्पिक क्रम इस प्रकार होगा कि पहले दो तत्व बढ़ते क्रम में हों और फिर अगले तीन तत्व घटते क्रम में हों और अगले चार आरोही क्रम में हों।

आइए समस्या को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं,

Input  : {1, 4, 0, 2, 7, 9, 3}
Output : 0 1 9 7 4 2 3

स्पष्टीकरण - तत्वों के बढ़ते क्रम में सरणी 0 1 2 3 4 7 9 है। पहले 2 तत्व 0 1 हैं। अंतिम 3 तत्व 9 7 4 हैं। अगले 4 चार तत्व 2 3 हैं (हम 4 तत्व ले सकते हैं लेकिन वहाँ हैं सरणी में केवल 2)।

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

एल्गोरिदम

Step 1 : Sort elements of the array.
Step 2 : Initialise left = 0 , right = n-1 , flag = 2.
Step 3 : while l is less than equal to r. Do :
Step 4 : If flag%2 == 0. Do :
   Step 4.1 : loop from i = left to left + flag. And print arr[i].
   Step 4.2 : update left = i ; flag ++;
Step 5 : else. Do :
   Step 5.1 : loop from i = right to right - flag. And print arr[i].
   Step 5.2 : update right = i and flag ++.
Step 6 : EXIT

उदाहरण

अब, इस एल्गोरिथम की कार्यप्रणाली को दर्शाने के लिए एक प्रोग्राम बनाते हैं।

#include <bits/stdc++.h>
using namespace std;
void printAlternateSeq(int arr[], int n){
   sort(arr, arr + n);
   int left = 0, right = n - 1, flag = 2, i;
   while (left <= right) {
      if (flag%2 == 0) {
         for (i = left; i < left + flag && i <= right; i++)
         cout<<arr[i]<<" ";
         left = i;
      } else {
         for (i = right; i > right - flag && i >= left; i--)
            cout<<arr[i]<<" ";
         right = i;
      }
      flag++;
   }
}
int main(){
   int n = 6;
   int arr[] = {23, 45, 78, 32, 89, 10 };
   printAlternateSeq(arr, n);
   return 0;
}

आउटपुट

10 23 89 78 45 32

  1. सी ++ में तीसरे सरणी में वैकल्पिक रूप से दो अलग-अलग सरणी के तत्वों को विलय करना।

    समस्या कथन दो सरणियों को देखते हुए, हमें दो सरणियों को इस तरह से संयोजित करने की आवश्यकता है कि संयुक्त सरणी में पहले और दूसरे सरणी के वैकल्पिक तत्व हों। यदि किसी एक सरणी में एक अतिरिक्त तत्व है, तो इन तत्वों को संयुक्त सरणी के अंत में जोड़ा जाना चाहिए। arr1[] = {10, 20, 30, 40} arr2[] = {-10, -20,

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

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

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

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