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

C++ . में बेसिक कैलकुलेटर

मान लीजिए हम एक मूल कैलकुलेटर बनाना चाहते हैं जो मूल अभिव्यक्ति परिणाम प्राप्त करेगा। व्यंजक में उद्घाटन और समापन कोष्ठक, धन या ऋण चिह्न और रिक्त स्थान हो सकते हैं।

तो अगर स्ट्रिंग "5 + 2 - 3" की तरह है, तो परिणाम 7 होगा

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

  • रिट:=0, साइन:=1, संख्या:=0, एन:=एस का आकार

  • एक स्टैक सेंट परिभाषित करें

  • प्रारंभ करने के लिए i :=0, जब i

    • एक सरणी x =s आकार i

      . परिभाषित करें
    • अगर x>='0' और x <='9', तो,

      • अंक =संख्या * 10

      • संख्या =संख्या + (x - '0')

    • अन्यथा जब x '(' के समान हो, तब -

      • रिट =रिट + (चिह्न * संख्या)

      • सेंट में रिट डालें

      • सेंट में साइन इन डालें

      • रिट:=0, साइन:=1, अंक:=0

    • अन्यथा जब x ')' के समान हो, तब -

      • रिट =रिट + (चिह्न * संख्या), चिह्न:=1, अंक:=0

      • रिट =रिट * सेंट का शीर्ष तत्व

      • सेंट से आइटम हटाएं

      • रिट =रिट + सेंट का शीर्ष तत्व

      • सेंट से आइटम हटाएं

    • अन्यथा जब x '+' के समान हो, तब −

      • रिट =रिट + (चिह्न * संख्या), चिह्न:=1, अंक:=0

    • अन्यथा जब x '-' के समान हो, तब -

      • रिट =रिट + (चिह्न * संख्या), संकेत:=- 1, अंक:=0

  • यदि संख्या शून्य नहीं है, तो,

    • रिट =रिट + साइन * अंक

  • वापसी रिट

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int calculate(string s) {
      int ret = 0;
      int sign = 1;
      int num = 0;
      int n = s.size();
      stack <int> st;
      for(int i = 0; i < n; ++i){
         char x = s[i];
         if(x >= '0' && x <= '9'){
            num *= 10;
            num += (x - '0');
         }
         else if(x == '('){
            ret += (sign * num);
            st.push(ret);
            st.push(sign);
            ret = 0;
            sign = 1;
            num = 0;
         }
         else if(x == ')'){
            ret += (sign * num);
            sign = 1;
            num = 0;
            ret *= st.top();
            st.pop();
            ret += st.top();
            st.pop();
         }
         else if(x == '+'){
            ret += (sign * num);
            sign = 1;
            num = 0;
         }
         else if(x == '-'){
            ret += (sign * num);
            sign = -1;
            num = 0;
         }
      }
      if(num){
         ret += sign * num;
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.calculate("5 + 2 - 3"));
}

इनपुट

"5 + 2 - 3"

आउटपुट

4

  1. सी++ में जंप गेम वी

    मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है जिसे arr और एक पूर्णांक d कहा जाता है। एक चरण में हम इंडेक्स i से − . पर जा सकते हैं i + x जहां:i + x

  1. C++ में K अंक हटाएं

    मान लीजिए कि हमारे पास एक गैर-ऋणात्मक पूर्णांक संख्या है जिसे एक स्ट्रिंग के रूप में दर्शाया गया है, हमें संख्या से k अंक निकालना होगा ताकि नई संख्या सबसे छोटी संभव हो। तो अगर इनपुट “1432219” और k =3 जैसा है, तो परिणाम “1219” होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - स्टैक सेंट को पर

  1. C++ . में चार भाजक

    मान लीजिए कि हमारे पास एक पूर्णांक सरणी संख्या है, हमें उस सरणी में पूर्णांकों के भाजक का योग ज्ञात करना होगा जिसमें ठीक चार भाजक हों। तो अगर सरणी में ऐसा कोई पूर्णांक नहीं है, तो 0 लौटाएं। उदाहरण के लिए, यदि इनपुट [21, 4, 7] है, तो आउटपुट 32 होगा, क्योंकि 21 में चार भाजक हैं 1, 3, 7, 21, 4 में तीन