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

C++ में सरणी को पुनर्व्यवस्थित करें ताकि 'arr[j]' 'i' बन जाए यदि 'arr[i]' 'j' है

हमें एक धनात्मक पूर्णांक प्रकार की सरणी दी गई है, मान लीजिए arr[] किसी भी दिए गए आकार की, जिसमें सरणी के तत्वों का मान 0 से अधिक लेकिन सरणी के आकार से कम होना चाहिए। कार्य सरणी को इस तरह पुनर्व्यवस्थित करना है कि यदि arr[j] 'j' है तो arr[j] 'i' बन जाए और अंतिम परिणाम प्रिंट करें।

विभिन्न इनपुट-आउटपुट परिदृश्य देखते हैं:

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

आउटपुट: व्यवस्था से पहले सरणी: 3 4 1 2 0 पुनर्व्यवस्थित सरणी जैसे कि arr[j] i बन जाए यदि arr[i] j है: 4 2 3 0 1

व्याख्या: हमें आकार 5 की एक पूर्णांक सरणी दी गई है और सरणी के सभी तत्वों का मान 5 से कम है। अब, हम सरणी को पुनर्व्यवस्थित करेंगे: arr[1] 4 है, arr[4] = 1; arr[2] 1 है, arr[1] = 2; arr[3] 2 है, arr[2] = 3; arr[4] 0 है, arr[0] = 4। इसलिए, अंतिम सरणी 4 2 3 0 1 है।

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

आउटपुट: व्यवस्था से पहले सरणी: 2 0 1 3 पुनर्व्यवस्थित सरणी जैसे कि arr[j] i बन जाए यदि arr[i] j है: 1 2 0 3

व्याख्या: हमें आकार 4 की एक पूर्णांक सरणी दी गई है और सरणी के सभी तत्वों का मान 4 से कम है। अब, हम सरणी को पुनर्व्यवस्थित करेंगे: arr[0] 2 है, arr[2] = 0; arr[1] 0 है, arr[0] = 1; arr[2] 1 है, arr[1] = 2; arr[3] 3 है, arr[3] = 3। इसलिए, अंतिम सरणी 1 2 0 3 है।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण:

  • पूर्णांक प्रकार के तत्वों की एक सरणी इनपुट करें और सरणी का आकार गणना करें।
  • व्यवस्था से पहले सरणी प्रिंट करें और फंक्शन Rearrangement(arr, size) को कॉल करें।
  • फंक्शन Rearrangement(arr, size) के अंदर:
    • सरणी arr[] के समान आकार की पूर्णांक प्रकार के मानों की एक सरणी ptr[] बनाएं।
    • i को 0 से size से कम तक लूप चलाएं। अंदर, ptr[arr[i]] को i पर सेट करें।
    • i को 0 से size से कम तक लूप चलाएं। अंदर, arr[i] को ptr[i] पर सेट करें।
  • सरणी के मानों के पुनर्व्यवस्थित होने के बाद सरणी प्रिंट करें।

उदाहरण

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

void Rearrangement(int arr[], int size) {
    int ptr[size];
    for(int i = 0; i < size; i++) {
        ptr[arr[i]] = i;
    }
    for(int i = 0; i < size; i++) {
        arr[i] = ptr[i];
    }
}

int main() {
    // एक सरणी इनपुट करें
    int arr[] = {3, 4, 1, 2, 0};
    int size = sizeof(arr) / sizeof(arr[0]);
    // मूल सरणी प्रिंट करें
    cout << "Array before Arrangement: ";
    for (int i = 0; i < size; i++) {
        cout << arr[i] << " ";
    }
    // सरणी को पुनर्व्यवस्थित करने के लिए फंक्शन कॉल करें
    Rearrangement(arr, size);
    // मानों को पुनर्व्यवस्थित करने के बाद सरणी प्रिंट करें
    cout << "\nRearrangement of an array such that 'arr[j]' becomes 'i' if 'arr[i]' is 'j' is: ";
    for(int i = 0; i < size; i++) {
        cout << arr[i] << " ";
    }
    return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:

Array before Arrangement: 3 4 1 2 0
Rearrangement of an array such that 'arr[j]' becomes 'i' if 'arr[i]' is 'j' is: 4 2 3 0 1
  1. - C++ प्रोग्राम: क्रमबद्ध सरणी में सभी ट्रिपलेट ज्ञात करना जो ज्यामितीय प्रगति बनाते हैं

    मान लें हमारे पास विशिष्ट धनात्मक पूर्णांकों की एक क्रमबद्ध सरणी है। हमें सभी ट्रिपलेट ज्ञात करने हैं, जो पूर्णांक सामान्य अनुपात के साथ ज्यामितीय प्रगति (Geometric Progression) बनाते हैं। मान लें सरणी तत्व [1, 2, 6, 10, 18, 54] हैं, ट्रिपलेट (2, 6, 18), और (6, 18, 54) हैं, ये ज्यामितीय प्रगति बना र

  1. - C++ में सरणी में उन सभी जोड़े (a, b) को खोजें जैसे कि a % b = k

    मान लीजिए हमारे पास एक सरणी A है, उस सरणी से हमें सभी जोड़े (a, b) प्राप्त करने हैं जैसे कि a%b = k। मान लीजिए सरणी A = [2, 3, 4, 5, 7], और k = 3, तो जोड़े हैं (7, 4), (3, 4), (3, 5), (3, 7)। इसे हल करने के लिए, हम सूची को पार करेंगे और जांचेंगे कि दी गई शर्त पूरी हो रही है या नहीं। उदाहरण #include

  1. - C++ में ऐरे डेके (Array Decay) क्या है?

    ऐरे डेके क्या है? ऐरे के प्रकार और आयामों की हानि को ऐरे डेके कहते हैं। यह तब होता है जब ऐरे को फ़ंक्शन में पॉइंटर या मान द्वारा पास किया जाता है। पहला पता पॉइंटर के रूप में भेजा जाता है, इसलिए ऐरे का आकार मूल नहीं रहता। C++ प्रोग्राम उदाहरण #include <iostream> using namespace std; void Dis