কম্পিউটার টিউটোরিয়াল

পোস্টফিক্স থেকে ইনফিক্স রূপান্তর (C++)

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

সংজ্ঞা

  • ইনফিক্স এক্সপ্রেশন: অপারেটর দুই অপারেন্ডের মাঝপথে থাকে, যেমন operand operator operand।
  • পোস্টফিক্স এক্সপ্রেশন: অপারেটর অপারেন্ডের পরে থাকে, যেমন operand operand operator।

পোস্টফিক্স এক্সপ্রেশন কম্পিউটারের জন্য সহজ কিন্তু মানুষের জন্য কঠিন। তাই ইনফিক্সে রূপান্তর দরকার হয়।

উদাহরণ

ইনপুট: xyz/*

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

অ্যালগরিদম (স্ট্যাক ব্যবহার করে)

  1. পোস্টফিক্স এক্সপ্রেশন ট্রাভার্স করুন।
  2. কেস ১: অপারেন্ড পেলে স্টাকে পুশ করুন।
  3. কেস ২: অপারেটর পেলে স্ট্যাক থেকে দুটি অপারেন্ড পপ করুন, ইনফিক্স এক্সপ্রেশন তৈরি করে আবার পুশ করুন।
  4. শেষে স্ট্যাকের একমাত্র উপাদানটি হবে ইনফিক্স রূপ।

C++ প্রোগ্রাম

#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 << "পোস্টফিক্স এক্সপ্রেশন '" << postfix << "' এর ইনফিক্স রূপ: ";
    cout << infixConversion(postfix);
    return 0;
}

আউটপুট

পোস্টফিক্স এক্সপ্রেশন 'xyae+/%' এর ইনফিক্স রূপ: {x%{y/{a+e}}}
  1. সি/সি++-তে Assertions (আসারশন)

  2. C++ এক্সপ্রেশন থেকে অবৈধ প্যারেনথেসিস রিমুভ করুন

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

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