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

C प्रोग्राम में पैलिंड्रोम बनाने के लिए वर्णों की व्यवस्थित स्थितियां प्रिंट करें


समस्या विवरण

आपको लंबाई n की एक स्ट्रिंग str दी गई है। स्ट्रिंग के प्रत्येक तत्व की स्थिति प्रिंट करें ताकि यह एक पैलिंड्रोम बना सके, अन्यथा स्क्रीन पर "कोई पैलिंड्रोम नहीं" संदेश प्रिंट करें।

पैलिंड्रोम क्या है?

पैलिंड्रोम एक शब्द या वर्णों का क्रम होता है जो पीछे से पढ़ने पर भी वही रहता है, जैसे MADAM, racecar।

उदाहरण

इनपुट: string str = "baa"
आउटपुट: 2 1 3

इनपुट: string str = "tinni"
आउटपुट: 2 3 1 4 5

एल्गोरिदम

void printPalindromePos(string &str)
शुरुआत
चरण 1: vector pos[MAX] घोषित करें
चरण 2: n को str की लंबाई के रूप में घोषित और असाइन करें
चरण 3: i = 0 से n-1 तक लूप
    pos[str[i]].push_back(i+1)
अंत लूप
चरण 4: oddCount = 0 सेट करें
चरण 5: oddChar घोषित करें
चरण 6: i = 0 से MAX-1 तक लूप
    यदि pos[i].size() % 2 != 0 तो
        oddCount को 1 से बढ़ाएं
        oddChar को i के रूप में सेट करें
    अंत यदि
अंत लूप
चरण 7: यदि oddCount > 1 तो
    "NO PALINDROME" प्रिंट करें
चरण 8: i = 0 से MAX-1 तक लूप
    mid = pos[i].size()/2 घोषित करें
    j = 0 से mid-1 तक लूप
        pos[i][j] प्रिंट करें
    अंत लूप
अंत लूप
चरण 9: यदि oddCount > 0 तो
    last = pos[oddChar].size() - 1 घोषित और सेट करें
    pos[oddChar][last] प्रिंट करें
    pos[oddChar].pop_back()
अंत यदि
चरण 10: i = MAX-1 से 0 तक लूप
    count = pos[i].size() घोषित और सेट करें
    j = count/2 से count-1 तक लूप
        pos[i][j] प्रिंट करें
रोकें

C++ प्रोग्राम उदाहरण

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

const int MAX = 256;

void printPalindromePos(string &str){
    vector pos[MAX];
    int n = str.length();
    for (int i = 0; i < n; i++)
        pos[str[i]].push_back(i+1);

    int oddCount = 0;
    char oddChar;
    for (int i = 0; i < MAX; i++) {
        if (pos[i].size() % 2 != 0) {
            oddCount++;
            oddChar = i;
        }
    }

    if (oddCount > 1)
        cout << "NO PALINDROME";

    for (int i = 0; i < MAX; i++){
        int mid = pos[i].size()/2;
        for (int j = 0; j < mid; j++)
            cout << pos[i][j] << " ";
    }

    if (oddCount > 0){
        int last = pos[oddChar].size() - 1;
        cout << pos[oddChar][last] << " ";
        pos[oddChar].pop_back();
    }

    for (int i = MAX-1; i >= 0; i--){
        int count = pos[i].size();
        for (int j = count/2; j < count; j++)
            cout << pos[i][j] << " ";
    }
}

int main(){
    string s = "tinni";
    printPalindromePos(s);
    return 0;
}

आउटपुट

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

2 3 1 4 5
  1. C प्रोग्राम में मैट्रिक्स को विकर्ण रूप से नीचे की ओर प्रिंट करें C प्रोग्राम में मैट्रिक्स को विकर्ण रूप से नीचे की ओर प्रिंट करें

    परिचय दिए गए n x n आकार के ऐरे के तत्वों को विकर्ण रूप से नीचे की ओर प्रिंट करना है। विकर्ण रूप से नीचे की ओर प्रिंट करना इसका अर्थ है n x n आकार के किसी भी ऐरे को विकर्ण रूप से नीचे की ओर प्रिंट करना, जैसा कि नीचे दिए गए चित्र में दिखाया गया है। उदाहरण इनपुट: Matrix[3][3] = { { 1, 2, 3 }, { 4, 5

  1. C प्रोग्राम में दिए गए मैट्रिक्स में शून्य की संख्या के आधार पर सॉर्ट किए गए कॉलम के इंडेक्स प्रिंट करें C प्रोग्राम में दिए गए मैट्रिक्स में शून्य की संख्या के आधार पर सॉर्ट किए गए कॉलम के इंडेक्स प्रिंट करें

    समस्या विवरण आकार N x M का एक ऐरे दिया गया है जहां N पंक्तियों की संख्या है और M कॉलम की संख्या है, और कार्य मैट्रिक्स के प्रत्येक कॉलम में शून्य की संख्या के आधार पर सॉर्ट ऑपरेशन करने के बाद हर कॉलम में शून्य की संख्या प्रिंट करना है। उदाहरण इनपुट: 0 0 0 1 1 1 1 0 1 आउटपुट: 1 3 2 व्याख्या नोट -

  1. C प्रोग्राम में ऐरे में तत्वों की अंतिम घटना को सापेक्ष क्रम में प्रिंट करें C प्रोग्राम में ऐरे में तत्वों की अंतिम घटना को सापेक्ष क्रम में प्रिंट करें

    समस्या विवरण तत्वों के साथ एक ऐरे a[] दिया गया है और कार्य सूची में दिए गए तत्वों की अंतिम घटनाओं को प्रिंट करना है। यहां हमें न केवल डुप्लिकेट तत्वों को हटाना है बल्कि हमें ऐरे में तत्वों की घटनाओं के क्रम को भी बनाए रखना है जैसा कि वे अंतिम बार हुए हैं। उदाहरण इनपुट: a[] = {4,2,2,4,1,5,1} आउटपुट