কম্পিউটার

C++ এ পোস্টফিক্স থেকে ইনফিক্স


এই সমস্যায়, আমাদের পোস্টফিক্স ফর্মে এক্সপ্রেশন দেওয়া হয় এবং আমাদের কাজ হল এক্সপ্রেশনের ইনফিক্স ফর্ম প্রিন্ট করা৷

ইনফিক্স এক্সপ্রেশন একটি অভিব্যক্তি যেখানে অপারেটর অপারেন্ডের মাঝখানে থাকে, যেমন অপারেন্ড অপারেটর অপারেন্ড।

পোস্টফিক্স এক্সপ্রেশন একটি অভিব্যক্তি যেখানে অপারেটর অপারেন্ডের পরে থাকে, যেমন অপারেন্ড অপারেটর৷

পোস্টফিক্স এক্সপ্রেশন সিস্টেম দ্বারা সহজে গণনা করা হয় কিন্তু মানুষের পাঠযোগ্য নয়। তাই এই রূপান্তর প্রয়োজন. সাধারণত শেষ-ব্যবহারকারীর দ্বারা পড়া এবং সম্পাদনা করা হয় ইনফিক্স নোটেশনে কারণ সেগুলি বন্ধনী আলাদা করা হয় তাই মানুষের পক্ষে সহজেই বোধগম্য৷

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

ইনপুট৷ − xyz/*

আউটপুট − (x * (y/z))

এই সমস্যা সমাধানের জন্য, আমরা স্ট্যাক ডেটা স্ট্রাকচার ব্যবহার করব। এবং পোস্টফিক্স এক্সপ্রেশনটি এক এক করে অতিক্রম করুন এবং তারপরে নিম্নলিখিত ক্ষেত্রে −

পরীক্ষা করুন

কেস 1 − যদি অপারেন্ডটি পাওয়া যায় তবে এটিকে স্ট্যাকের মধ্যে ঠেলে দিন।

কেস 2 − যদি একটি অপারেটর পাওয়া যায়, অপারেন্ডে পপ করুন, তিনটির একটি ইনফিক্স এক্সপ্রেশন তৈরি করুন এবং এক্সপ্রেশনটিকে একটি অপারেন্ড হিসাবে পুশ করুন৷

শেষ পর্যন্ত যখন স্ট্যাকের শুধুমাত্র একটি উপাদান অবশিষ্ট থাকে এবং ট্র্যাভার্সিং সম্পন্ন হয়, তখন স্ট্যাকের শীর্ষে পপ করুন, এটি ইনফিক্স রূপান্তর।

উদাহরণ

আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম।

#include <bits/stdc++.h>
using namespace std;
bool isOperand(char x) {
   return (x >= 'a' && x <= 'z') || (x >= 'A' && x <= 'Z');
}
string infixConversion(string postfix) {
   stack<string> infix;
   for (int i=0; postfix[i]!='\0'; i++) {
      if (isOperand(postfix[i])) {
         string op(1, postfix[i]);
         infix.push(op);
      } else {
         string op1 = infix.top();
         infix.pop();
         string op2 = infix.top();
         infix.pop();
         infix.push("{"+op2+postfix[i]+op1 +"}");
      }
   }
   return infix.top();
}
int main() {
   string postfix = "xyae+/%";
   cout<<"The infix conversion of the postfix expression '"<<postfix<<"' is : ";
   cout<<infixConversion(postfix);
   return 0;
}

আউটপুট

The infix conversion of the postfix expression 'xyae+/%' is : {x%{y/{a+e}}}

  1. C/C++ এ দাবী

  2. C++ একটি অভিব্যক্তি থেকে অবৈধ বন্ধনী সরান

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

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