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

C++ में मान्य कोष्ठक


मान लीजिए कि हमारे पास एक व्यंजक है। व्यंजक के कुछ कोष्ठक हैं; हमें यह जांचना है कि कोष्ठक संतुलित हैं या नहीं। कोष्ठकों का क्रम (), {} और [] है। मान लीजिए कि दो तार हैं। "()[(){()}]" यह मान्य है, लेकिन "{[}]" अमान्य है।

कार्य सरल है; हम ऐसा करने के लिए स्टैक का उपयोग करेंगे। समाधान पाने के लिए हमें इन चरणों का पालन करना चाहिए -

  • व्यंजक को तब तक पार करें जब तक वह समाप्त न हो जाए

    • यदि वर्तमान वर्ण ब्रैकेट खोल रहा है जैसे (, { या [, तो स्टैक में पुश करें

    • यदि वर्तमान वर्ण ब्रैकेट बंद कर रहा है जैसे ), } या ], तो स्टैक से पॉप करें, और जांचें कि क्या पॉप किया गया ब्रैकेट वर्तमान वर्ण का प्रारंभिक ब्रैकेट है, तो यह ठीक है, अन्यथा, यह संतुलित नहीं है।

  • स्ट्रिंग समाप्त होने के बाद, यदि स्टैक में कुछ शुरुआती ब्रैकेट बचे हैं, तो स्ट्रिंग संतुलित नहीं है।

उदाहरण

#include <iostream>
#include <stack>
using namespace std;
bool isBalancedExp(string exp) {
   stack<char> stk;
   char x;
   for (int i=0; i<exp.length(); i++) {
      if (exp[i]=='('||exp[i]=='['||exp[i]=='{') {
         stk.push(exp[i]);
         continue;
      }
      if (stk.empty())
         return false;
      switch (exp[i]) {
      case ')':
         x = stk.top();
         stk.pop();
         if (x=='{' || x=='[')
            return false;
         break;
      case '}':
         x = stk.top();
         stk.pop();
         if (x=='(' || x=='[')
            return false;
         break;
      case ']':
         x = stk.top();
         stk.pop();
         if (x =='(' || x == '{')
            return false;
         break;
      }
   }
   return (stk.empty());
}
int main() {
   string expresion = "()[(){()}]";
   if (isBalancedExp(expresion))
      cout << "This is Balanced Expression";
   else
      cout << "This is Not Balanced Expression";
}

इनपुट

"()[(){()}]"

आउटपुट

This is Balanced Expression

  1. सी ++ प्रोग्राम एन मान्य ब्रैकेट अनुक्रम खोजने के लिए

    मान लीजिए कि हमारे पास एक संख्या n है। जैसा कि हम जानते हैं, एक ब्रैकेट अनुक्रम एक स्ट्रिंग है जिसमें केवल ( और ) वर्ण होते हैं। एक वैध ब्रैकेट अनुक्रम एक ब्रैकेट अनुक्रम है जिसे अनुक्रम के मूल वर्णों के बीच 1 और + वर्ण सम्मिलित करके सही अंकगणितीय अभिव्यक्ति में परिवर्तित किया जा सकता है। इसलिए, यदि

  1. सी ++ एक अभिव्यक्ति से अमान्य कोष्ठक निकालें

    एक कोष्ठक अनुक्रम को देखते हुए; अब, आपको उन सभी संभावित कोष्ठकों को प्रिंट करना होगा, जिन्हें वह अमान्य कोष्ठकों को हटाकर बना सकता है, उदाहरण के लिए Input : str = “()())()” - Output : ()()() (())() There are two possible solutions "()()()" and "(())()" Input : str =

  1. C++ में मान्य सुडोकू

    मान लीजिए कि हमने एक 9×9 मैट्रिक्स दिया है जिसे सुडोकू कहा जाता है। कार्य यह जांचना है कि दिया गया सुडोकू पैटर्न मान्य है या नहीं। सामान्य तौर पर, सुडोकू बोर्ड इस तरह दिखता है, सुडोकू के नियम - प्रत्येक पंक्ति में 1-9 की श्रेणी में एक संख्या होती है प्रत्येक कॉलम में 1-9 की श्रेणी में संख्