क्या आप समस्या को हल करने के लिए बाइनरी पद्धति का उपयोग करने के बजाय बुनियादी C++ प्रोग्राम का उपयोग कर सकते हैं?


C++ में एक प्रोग्राम लिखें। आउटपुट का अंतिम कॉलम रैप नहीं होता है। उपयोगकर्ताओं को कीबोर्ड के माध्यम से 15 पूर्णांक (सकारात्मक और नकारात्मक पूर्णांक सहित) इनपुट करने की अनुमति देता है। प्रोग्राम इनपुट संख्याओं को (छोटे से बड़े तक) क्रमबद्ध करता है और परिणाम प्रिंट करता है। हालाँकि, छँटाई के नियमों को इस प्रकार थोड़ा समायोजित किया गया है: (1) सभी सम संख्याओं को सभी विषम संख्याओं से पहले क्रमबद्ध किया जाना चाहिए (2) सभी सम संख्याओं और सभी विषम संख्याओं को छोटे से बड़े में क्रमबद्ध किया जाता है (3) यदि इनपुट में 0, 0 है आगे और बाद की गैर-शून्य संख्याओं को उपरोक्त नियमों के अनुसार क्रमबद्ध किया जाएगा। उदाहरण के लिए, इनपुट संख्याएँ क्रम में हैं: 51 -4 0 24 -13 -6 0 38 -27 -48 3 17 8 0 21। फिर क्रमबद्ध परिणाम है: 0 0 0 -48 -6 -4 8 24 38 – 27 -13 3 17 21 51 जिन भागों के लिए उपयोगकर्ता इनपुट की आवश्यकता होती है, कृपया उपयोगकर्ता को इनपुट की अनुमति देने से पहले टेक्स्ट संदेश प्रॉम्प्ट का प्रिंट आउट लें। प्रोग्राम निष्पादन आउटपुट स्क्रीन इस प्रकार है ( का अर्थ है रिक्त) पूर्णांक1:51 पूर्णांक2:-4 पूर्णांक3:0 पूर्णांक4:24 पूर्णांक5:-13 पूर्णांक6:-6 पूर्णांक7:0 पूर्णांक8:38 पूर्णांक9:-27 पूर्णांक10:-48 पूर्णांक11: 3 पूर्णांक12: 17 पूर्णांक13:8 पूर्णांक14:0 पूर्णांक15:21 परिणाम: 0□0□0□-48□-6□-4□8□24□38□-27□-13□3□17□21□51

मैंने क्या प्रयास किया है:

सी++
#include <iostream>
using namespace std;

void sortArray(int arr[], int n) {
    int temp;
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (arr[i] > arr[j]) {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}

int main() {
    int nums[15];
    int sortedNums[15];
    int n = 0;

 
    for (int i = 0; i < 15; ++i) {
        cout << "Integer" << i + 1 << ": ";
        cin >> nums[i];
    }

    for (int i = 0; i < 15; ++i) {
        if (nums[i] == 0) {
            sortedNums[n++] = nums[i];
        }
    }

    for (int i = 0; i < 15; ++i) {
        if (nums[i] != 0 && nums[i] % 2 == 0) {
            sortedNums[n++] = nums[i];
        }
    }


    for (int i = 0; i < 15; ++i) {
        if (nums[i] % 2 != 0) {
            sortedNums[n++] = nums[i];
        }
    }

    // ?整?排序???行排序
    sortArray(sortedNums, n);

    // ?出?果
    cout << "Result: ";
    for (int i = 0; i < n; i++) {
        cout << sortedNums[i] << " ";
    }

    return 0;
}

समाधान 1

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

0 0 0 -48 -6 -4 8 24 38 -27 -13 3 17 21 51

तो उस सूची से दो नई सूचियों में विभाजित होना एक साधारण बात है। एक में सभी सम संख्याएँ हैं, जिसके अंत में शून्य है, और एक में सभी विषम संख्याएँ हैं।

वैकल्पिक रूप से आप प्रश्न में जो कहा गया है उसे करने के लिए अपनी सॉर्ट रूटीन में नियमों का उपयोग कर सकते हैं।

コメント

タイトルとURLをコピーしました