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

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

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

यहां भी हमें पोस्टफिक्स एक्सप्रेशन को हल करने के लिए स्टैक डेटा संरचना का उपयोग करना होगा।

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

Input: Postfix expression: 53+62/*35*+
Output: The result is: 39

एल्गोरिदम

पोस्टफिक्समूल्यांकन(पोस्टफिक्स)

इनपुट :मूल्यांकन के लिए पोस्टफ़िक्स एक्सप्रेशन।

आउटपुट :पोस्टफिक्स फॉर्म का मूल्यांकन करने के बाद उत्तर दें।

Begin
   for each character ch in the postfix expression, do
      if ch is an operator , then
         a := pop first element from stack
         b := pop second element from the stack
         res := b a
         push res into the stack
      else if ch is an operand, then
         add ch into the stack
   done
   return element of stack top
End

उदाहरण कोड

#include<iostream>
#include<cmath>
#include<stack>
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 = "53+62/*35*+";
   cout << "The result is: "<<postfixEval(post);
}

आउटपुट

The result is: 39

  1. C++ प्रोग्राम का उपयोग करके प्रोग्राम कैसे लॉन्च करें?

    यहां हम देखेंगे कि कुछ तृतीय-पक्ष एप्लिकेशन जैसे नोटपैड या सी ++ प्रोग्राम का उपयोग करके कुछ भी कैसे शुरू किया जाए। यह प्रोग्राम बहुत सरल है, हम इस कार्य को करने के लिए कमांड प्रॉम्प्ट कमांड का उपयोग कर सकते हैं। हम सिस्टम () फ़ंक्शन के अंदर एप्लिकेशन का नाम पास करेंगे। यह उसके अनुसार खुल जाएगा। उद

  1. पायथन का उपयोग करके एक अभिव्यक्ति वृक्ष बनाने और उसका मूल्यांकन करने का कार्यक्रम

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

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

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