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

পোস্টফিক্স নোটেশন (রিভার্স পোলিশ নোটেশন) ইভ্যালুয়েট করা C++-এ


একটি পোস্টফিক্স এক্সপ্রেশন দেওয়া আছে। লক্ষ্য হল এর মান বের করা। স্ট্যাক ডেটা স্ট্রাকচার ব্যবহার করে সমাধান করা হয়।

প্রতিটি ক্যারেক্টার স্ক্যান করা হয়: অপারেন্ড হলে স্টকে পুশ, অপারেটর হলে দুটি উপাদান পপ করে অপারেশন করে ফলাফল পুশ। শেষে স্টকের টপ ফলাফল।

উদাহরণ

ইনপুট: "21+3*"

আউটপুট: ৯

ব্যাখ্যা: (২+১)×৩ = ৯

C++ কোড উদাহরণ
#include 
using namespace std;

float scanNum(char ch){
    return float(ch - '0');
}

int isOperator(char ch){
    return (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^') ? 1 : -1;
}

int isOperand(char ch){
    return (ch >= '0' && ch <= '9') ? 1 : -1;
}

float operation(int a, int b, char op){
    if(op == '+') return b + a;
    else if(op == '-') return b - a;
    else if(op == '*') return b * a;
    else if(op == '/') return b / a;
    else if(op == '^') return pow(b, a);
    return INT_MIN;
}

float postfixEval(string postfix){
    stack stk;
    for(char ch : postfix){
        if(isOperator(ch) != -1){
            float a = stk.top(); stk.pop();
            float b = stk.top(); stk.pop();
            stk.push(operation(a, b, ch));
        } else if(isOperand(ch) > 0){
            stk.push(scanNum(ch));
        }
    }
    return stk.top();
}

int main(){
    string post = "21+3*";
    cout << postfixEval(post);
    return 0;
}
আউটপুট

উপরোক্ত কোড রান করলে আউটপুট:

9
  1. বাইনারি সার্চ C++ প্রোগ্রামে

  2. পোস্টফিক্স এক্সপ্রেশনের জন্য এক্সপ্রেশন ট্রি কনস্ট্রাক্ট করার C++ প্রোগ্রাম

  3. C++ প্রোগ্রাম: স্ট্যাক ব্যবহার করে এক্সপ্রেশন ইভ্যালুয়েট করা

  4. C++-তে টার্নারি এক্সপ্রেশন ইভ্যালুয়েট করার প্রোগ্রাম