কম্পিউটার

C++ এ ইনফিক্স রূপান্তর থেকে উপসর্গ


এই সমস্যায়, আমাদের একটি প্রিফিক্স এক্সপ্রেশন দেওয়া হয়। আমাদের কাজ হল প্রদত্ত অভিব্যক্তির ইনফিক্স রূপান্তর প্রিন্ট করা।

প্রিফিক্স এক্সপ্রেশন হল সেই সব এক্সপ্রেশন যার অপারেন্ডের আগে অপারেটর থাকে।

উদাহরণ:+AB.

ইনফিক্স এক্সপ্রেশন হল সেই সব এক্সপ্রেশন যার অপারেন্ডের মধ্যে অপারেটর থাকে।

উদাহরণ:A+B

ইনফিক্স এক্সপ্রেশন হল মানুষের বোঝার জন্য তথ্য, কিন্তু কম্পিউটার প্রিফিক্স বা পোস্টফিক্স এক্সপ্রেশনের (সাধারণত পোস্টফিক্স) গণনা করে।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক

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. ইনফিক্সকে প্রিফিক্স এক্সপ্রেশনে রূপান্তর করুন

  2. C++ এ উদাহরণ সহ এক্সপ্রেশন ট্রি

  3. C++ এ এক্সপ্রেশন ট্রির মূল্যায়ন

  4. C++ এ বাইনারি ট্রি থেকে বাইনারি সার্চ ট্রি কনভার্সন