কম্পিউটার

C++ তে ত্রিদেশীয় অভিব্যক্তি মূল্যায়ন করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি অভিব্যক্তি আছে যা ত্রিমাত্রিক রাশি ধারণ করে, আমাদের অভিব্যক্তিটির ফলাফল মূল্যায়ন করতে হবে। এটি সত্য এবং মিথ্যার জন্য T এবং F এর মত কিছু মান সমর্থন করে এবং "?" এবং ":" অক্ষর। কিছু বৈশিষ্ট্য আছে:

  • প্রদত্ত স্ট্রিংটির দৈর্ঘ্য অবশ্যই 10000 এর কম বা সমান হতে হবে।
  • কন্ডিশনাল এক্সপ্রেশন ডান-থেকে-বামে গ্রুপ।
  • শর্তটি সর্বদা T বা F হবে। তাই শর্তটি কখনই একটি অঙ্ক হবে না।
  • অভিব্যক্তির ফলাফল সর্বদা T বা F তে মূল্যায়ন করা হবে।

সুতরাং উদাহরণস্বরূপ, যদি ইনপুটটি "T? টি? F :T :T", তাই আউটপুট হবে F.

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:

  • ret :=একটি খালি স্ট্রিং, n :=s এর আকার,
  • একটি স্ট্যাক স্ট্যাক তৈরি করুন
  • আমি n – 1 থেকে 0
      রেঞ্জে
    • x :=s[i]
    • যদি st খালি না হয় এবং স্ট্যাকের উপরের '?' হয়, তাহলে
      • st থেকে মুছুন
      • প্রথম :=st এর শীর্ষ, তারপর স্ট্যাক থেকে দুটি উপাদান মুছে দিন
      • সেকেন্ড :=স্ট্যাকের শীর্ষ, এবং st থেকে মুছে দিন
      • যদি x টি হয়, তাহলে প্রথমে st-এ ঢোকান, অন্যথায় st-এ দ্বিতীয় ঢোকান
    • অন্যথায় st-এ x ঢোকান
  • যখন st খালি নয়, তারপর
    • ret :=ret + st এর শীর্ষ এবং st থেকে মুছে দিন
  • রিভার্স রেট এবং রিটার্ন রিটার্ন

আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:

উদাহরণ

#include
using namespace std;
class Solution {
   public:
   string parseTernary(string s) {
      string ret = "";
      int n = s.size();
      stack st;
      for(int i = n - 1; i >= 0; i--){
         char x = s[i];
         if(!st.empty() && st.top() == '?'){
            st.pop();
            char first = st.top();
            st.pop();
            st.pop();
            char second = st.top();
            st.pop();
            if(x == 'T'){
               st.push(first);
            }
            else st.push(second);
         }
         else{
            st.push(x);
         }
      }
      while(!st.empty()){
         ret += st.top();
         st.pop();
      }
      reverse(ret.begin(), ret.end());
   return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.parseTernary("T?T?F:T:T"));
}

ইনপুট

" T?T?F:T:T"

আউটপুট

F

  1. স্ট্যাক ব্যবহার করে একটি অভিব্যক্তি মূল্যায়ন করার জন্য C++ প্রোগ্রাম

  2. পাইথন ব্যবহার করে একটি এক্সপ্রেশন ট্রি তৈরি এবং মূল্যায়ন করার জন্য প্রোগ্রাম

  3. পাইথনে অন্তর্নির্মিত ফাংশন ছাড়াই একটি গাণিতিক অভিব্যক্তি মূল্যায়ন করার প্রোগ্রাম

  4. পাইথনে একটি স্ট্রিং থেকে বুলিয়ান এক্সপ্রেশন মূল্যায়ন করার জন্য প্রোগ্রাম?