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

C++ में प्रीफिक्स से इन्फिक्स रूपांतरण


इस समस्या में, हमें एक प्रीफिक्स एक्सप्रेशन दिया गया है। हमारा कार्य दिए गए एक्सप्रेशन का इन्फिक्स रूपांतरण प्रिंट करना है।

प्रीफिक्स एक्सप्रेशन वे एक्सप्रेशन हैं जिनमें ऑपरेटर ऑपरेंड्स से पहले होते हैं।

उदाहरण: +AB.

इन्फिक्स एक्सप्रेशन वे एक्सप्रेशन हैं जिनमें ऑपरेटर ऑपरेंड्स के बीच होते हैं।

उदाहरण: A+B

इन्फिक्स एक्सप्रेशन मानव समझ के लिए जानकारी हैं, लेकिन कंप्यूटर प्रीफिक्स या पोस्टफिक्स एक्सप्रेशन (आमतौर पर पोस्टफिक्स) पर गणना करता है।

समस्या को समझने के लिए एक उदाहरण लेते हैं

Input: prefix : /+LM/NX Output: infix : (L+M) / (N/X)

इस समस्या को हल करने के लिए, हम स्टैक डेटा संरचना का उपयोग करेंगे। हम एक्सप्रेशन के रिवर्स ऑर्डर में प्रीफिक्स एक्सप्रेशन को पार करेंगे। और एक्सप्रेशन के प्रत्येक एलिमेंट के लिए इन मामलों की जांच करेंगे।

यदि एलिमेंट ऑपरेंड है -> push(element) स्टैक में।

यदि एलिमेंट ऑपरेटर है -> 2Xpop(topofstack) और क्रम में पुश करें स्ट्रिंग के रूप में = ऑपरेंड - ऑपरेटर - ऑपरेंड।

अंत में, पार करने के बाद, स्टैक के टॉप में एक स्ट्रिंग होगी जो इन्फिक्स रूपांतरण है, इसे प्रिंट करें।

हमारे समाधान के कार्यान्वयन को दिखाने वाला प्रोग्राम

उदाहरण

#include <iostream> #include <stack> using namespace std; bool isOperator(char element) {    switch (element) {       case '+':       case '-':       case '/':       case '*':       return true;    }    return false; } string convertToInfix(string prefix) {    stack<string> expression;    int length = prefix.size();    for (int i = length - 1; i >= 0; i--) {       if (isOperator(prefix[i])) {          string op1 = expression.top();          expression.pop();          string op2 = expression.top();          expression.pop();          string temp = "{"+op1+prefix[i]+op2+"}";          expression.push(temp);       } else {          expression.push(string(1, prefix[i]));       }    }    return expression.top(); } int main() {    string prefix = "*-AB/+CD*XY";    cout<<"Prefix expression : "<<prefix<<endl;    cout<<"Infix expression : " <<convertToInfix(prefix);    return 0; }

आउटपुट

Prefix expression : *-AB/+CD*XY Infix expression : {{A-B}*{{C+D}/{X*Y}}}

  1. C++ में उदाहरण के साथ एक्सप्रेशन ट्री C++ में उदाहरण के साथ एक्सप्रेशन ट्री

    एक एक्सप्रेशन ट्री एक विशेष प्रकार का बाइनरी ट्री है जिसमें ट्री का प्रत्येक नोड या तो एक ऑपरेटर या ऑपरेंड से बना होता है। लीफ नोड्स ट्री के एक ऑपरेंड को दर्शाते हैं। नॉन-लीफ नोड्स ट्री के एक ऑपरेटर को दर्शाते हैं। उदाहरण: इनफिक्स एक्सप्रेशन प्राप्त करने के लिए जिसे आसानी से हल किया जा सकता है, हम

  1. C++ में एक्सप्रेशन ट्री का मूल्यांकन C++ में एक्सप्रेशन ट्री का मूल्यांकन

    इस समस्या में, हमें एक एक्सप्रेशन ट्री दिया गया है जिसमें +, -, /, * जैसे बाइनरी ऑपरेशन होते हैं। हमें इस एक्सप्रेशन ट्री का मूल्यांकन करके परिणाम वापस करना होता है। एक्सप्रेशन ट्री क्या है? एक्सप्रेशन ट्री एक विशेष प्रकार का बाइनरी ट्री है जिसमें प्रत्येक नोड या तो एक ऑपरेटर होता है या एक ऑपरेंड,

  1. C++ में बाइनरी ट्री को बाइनरी सर्च ट्री में रूपांतरण C++ में बाइनरी ट्री को बाइनरी सर्च ट्री में रूपांतरण

    एक बाइनरी ट्री एक विशेष प्रकार का ट्री है जिसमें ट्री का प्रत्येक नोड अधिकतम दो चाइल्ड नोड रख सकता है। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के नाम से जाना जाता है। एक साधारण बाइनरी ट्री है - बाइनरी सर्च ट्री (BST) एक विशेष प्रकार का ट्री है जो निम्नलिखित नियमों का पालन करता है - बाएं चाइ