একটি পোস্টফিক্স এক্সপ্রেশন দেওয়া আছে। লক্ষ্য হল এর মান বের করা। স্ট্যাক ডেটা স্ট্রাকচার ব্যবহার করে সমাধান করা হয়।
প্রতিটি ক্যারেক্টার স্ক্যান করা হয়: অপারেন্ড হলে স্টকে পুশ, অপারেটর হলে দুটি উপাদান পপ করে অপারেশন করে ফলাফল পুশ। শেষে স্টকের টপ ফলাফল।
ইনপুট: "21+3*"
আউটপুট: ৯
ব্যাখ্যা: (২+১)×৩ = ৯
#includeusing 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