Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

सी ++ में टर्नरी अभिव्यक्ति का मूल्यांकन करने का कार्यक्रम

मान लीजिए कि हमारे पास एक अभिव्यक्ति है जो त्रिगुट अभिव्यक्ति रखती है, हमें अभिव्यक्ति के परिणाम का मूल्यांकन करना होगा। यह सही और गलत के लिए टी और एफ जैसे कुछ मूल्यों का समर्थन करता है और "?" और ":" अक्षर। कुछ गुण हैं:

  • दिए गए स्ट्रिंग की लंबाई 10000 से कम या उसके बराबर होनी चाहिए।
  • सशर्त अभिव्यक्ति समूह दाएं से बाएं।
  • शर्त हमेशा टी या एफ होगी। इसलिए शर्त कभी भी अंक नहीं होगी।
  • व्यंजक का परिणाम हमेशा T या F का मूल्यांकन करेगा।

तो उदाहरण के लिए, यदि इनपुट "टी" जैसा है? टी ? एफ:टी:टी", तो आउटपुट एफ होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:

  • ret:=एक खाली स्ट्रिंग, n:=s का आकार,
  • स्टैक सेंट बनाएं
  • मैं श्रेणी n - 1 से 0 तक के लिए
    • x :=s[i]
    • यदि st खाली नहीं है और स्टैक का शीर्ष '?' है, तो
      • सेंट से हटाएं
      • पहले :=सेंट के ऊपर, फिर स्टैक से दो तत्वों को हटा दें
      • दूसरा:=स्टैक के ऊपर, और सेंट से हटाएं
      • यदि x, T है, तो पहले st में डालें, अन्यथा st में दूसरा डालें
    • अन्यथा x को सेंट में डालें
  • जब तक सेंट खाली नहीं है, तब
    • 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. पायथन का उपयोग करके एक अभिव्यक्ति वृक्ष बनाने और उसका मूल्यांकन करने का कार्यक्रम

    मान लीजिए, हमें एक व्यंजक ट्री का पोस्ट ऑर्डर ट्रैवर्सल दिया गया है। हमें दिए गए पोस्ट-ऑर्डर ट्रैवर्सल से एक एक्सप्रेशन ट्री बनाना है, और फिर एक्सप्रेशन का मूल्यांकन करना है। हम एक्सप्रेशन ट्री की जड़ और ट्री का मूल्यांकित मान लौटाते हैं। तो, अगर इनपुट पसंद है तो आउटपुट -7 होगा। पेड़ के इनपुट क

  1. पायथन में अंतर्निहित कार्यों के बिना एक गणितीय अभिव्यक्ति का मूल्यांकन करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग है जो गणितीय अभिव्यक्ति का प्रतिनिधित्व करती है (+, -, *, /) यहां / पूर्णांक विभाजन का प्रतिनिधित्व कर रहा है, हमें किसी भी अंतर्निहित फ़ंक्शन का उपयोग किए बिना परिणाम का मूल्यांकन करना और वापस करना होगा। इसलिए, यदि इनपुट s =2+3*5/7 जैसा है, तो आउटपुट 4 होगा, जैसे

  1. कार्यक्रम अजगर में एक स्ट्रिंग से बूलियन अभिव्यक्ति का मूल्यांकन करने के लिए?

    मान लीजिए कि हमारे पास एक स्ट्रिंग है जिसमें ऑपरेटरों और और या के साथ एक बूलियन अभिव्यक्ति है, इसका मूल्यांकन करें और परिणाम लौटाएं। यहां भावों में कोष्ठक हो सकते हैं, जिनका मूल्यांकन पहले किया जाना चाहिए। इसलिए, यदि इनपुट s =T और (F या T) जैसा है, तो आउटपुट सही होगा इसे हल करने के लिए, हम इन चरणो