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

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

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

उपसर्ग व्यंजक वे व्यंजक हैं जिनमें संकार्य से पहले संचालिका होती है।

उदाहरण:+AB.

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

उदाहरण:ए+बी

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

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

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

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

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

यदि तत्व ऑपरेटर है -> 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. सी ++ में उदाहरण के साथ अभिव्यक्ति वृक्ष

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

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

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

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

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