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

सी++ में पोस्टफिक्स नोटेशन का मूल्यांकन करने का कार्यक्रम

मान लीजिए कि हमारे पास पोस्टफिक्स अभिव्यक्ति है और हमें मूल्य का मूल्यांकन करना है। पोस्टफिक्स एक्सप्रेशन को रिवर्स पॉलिश नोटेशन के रूप में भी जाना जाता है। यहां हमें पोस्टफिक्स एक्सप्रेशन को हल करने के लिए स्टैक डेटा संरचना का उपयोग करना होगा।

तो अगर व्यंजक “21+3*” है, तो उत्तर 9 होगा।

आइए चरणों को देखें -

  • पोस्टफ़िक्स एक्सप्रेशन में प्रत्येक वर्ण ch के लिए, करें
    • यदि ch एक ऑपरेटर है $\odot$ , तो
      • a :=स्टैक से पहला तत्व पॉप करें,
      • b :=स्टैक से दूसरा तत्व पॉप करें
      • res :=b $\odot$ a
      • रेस को स्टैक में पुश करें
    • अन्यथा यदि ch एक संकार्य है, तो
      • ch को स्टैक में जोड़ें
  • स्टैक टॉप का रिटर्न एलिमेंट

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include<bits/stdc++.h>
using namespace std;
float scanNum(char ch){
   int value;
   value = ch;
   return float(value-'0');//return float from character
}
int isOperator(char ch){
   if(ch == '+'|| ch == '-'|| ch == '*'|| ch == '/' || ch == '^')
      return 1;//character is an operator
      return -1;//not an operator
   }
   int isOperand(char ch){
      if(ch >= '0' && ch <= '9')
         return 1;//character is an operand
      return -1;//not an operand
   }
   float operation(int a, int b, char op){
      //Perform operation
      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); //find b^a
      else
   return INT_MIN; //return negative infinity
}
float postfixEval(string postfix){
   int a, b;
   stack<float> stk;
   string::iterator it;
   for(it=postfix.begin(); it!=postfix.end(); it++){
      //read elements and perform postfix evaluation
      if(isOperator(*it) != -1){
         a = stk.top();
         stk.pop();
         b = stk.top();
         stk.pop();
         stk.push(operation(a, b, *it));
      }else if(isOperand(*it) > 0){
         stk.push(scanNum(*it));
      }
   }
   return stk.top();
}
main(){
   string post = "21+3*";
   cout <<postfixEval(post);
}

इनपुट

"21+3*"

आउटपुट

9

  1. सी ++ प्रोग्राम में बाइनरी सर्च?

    द्विआधारी खोज, जिसे अर्ध-अंतराल खोज, लॉगरिदमिक खोज या बाइनरी चॉप के रूप में भी जाना जाता है, एक खोज एल्गोरिथ्म है जो एक क्रमबद्ध सरणी के भीतर लक्ष्य मान की स्थिति का पता लगाता है। बाइनरी खोज लक्ष्य मान की तुलना सरणी के मध्य तत्व से करती है। यदि वे समान नहीं हैं, तो आधा जिसमें लक्ष्य झूठ नहीं बोल सकत

  1. सी ++ प्रोग्राम स्टैक का उपयोग करके एक अभिव्यक्ति का मूल्यांकन करने के लिए

    गणितीय व्यंजक को हल करने के लिए हमें उपसर्ग या उपसर्ग रूप की आवश्यकता होती है। इंफिक्स को पोस्टफिक्स में बदलने के बाद, हमें सही उत्तर खोजने के लिए पोस्टफिक्स मूल्यांकन एल्गोरिदम की आवश्यकता होती है। यहां भी हमें पोस्टफिक्स एक्सप्रेशन को हल करने के लिए स्टैक डेटा संरचना का उपयोग करना होगा। पोस्टफ़ि

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

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