मान लीजिए हमारे पास उपयोगकर्ता नामों की एक स्ट्रिंग है और हमें कुछ शर्तों के आधार पर जांचना है कि उपयोगकर्ता नाम वैध है या नहीं। इसलिए हमें एक अपवाद परिभाषित करना होगा जो तब फेंका जाता है जब उपयोगकर्ता नाम की लंबाई 5 वर्णों से कम हो। हमें वैध उपयोगकर्ता नाम के लिए "Valid", अवैध के लिए "Invalid" और छोटे उपयोगकर्ता नामों के लिए अपवाद फेंकना होगा। वैध उपयोगकर्ता नाम की शर्तें हैं:
- उपयोगकर्ता नाम पांच वर्ण लंबा होना चाहिए
- उपयोगकर्ता नाम में लगातार दो 'w' नहीं होने चाहिए
उदाहरण के लिए, यदि इनपुट unames = ["amit", "to", "paul_tim", "greg_harry", "towwer"] है, तो आउटपुट होगा: [Too short: 4, Too short: 2, Valid, Valid, Invalid] क्योंकि पहले दो बहुत छोटे हैं, और अंतिम में दो लगातार 'w' हैं। अन्य ठीक हैं।
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- BadLengthException नामक एक अपवाद परिभाषित करें
- यह लंबाई के साथ संदेश लौटाएगा
- validation() फंक्शन परिभाषित करें, जो u_name लेगा:
- isValid := true
- n := u_name का आकार
- यदि n < 5:
- BadLengthException(n) फेंकें
- i := 0 से n-2 तक:
- यदि u_name[i] == 'w' और u_name[i+1] == 'w':
- isValid := false
- यदि u_name[i] == 'w' और u_name[i+1] == 'w':
- isValid लौटाएं
- मुख्य विधि से:
- unames में प्रत्येक उपयोगकर्ता नाम u_name के लिए:
- validate(u_name) कॉल करें
- यदि वैध तो VALID प्रिंट करें
- अन्यथा यदि अवैध तो INVALID प्रिंट करें
- अन्यथा यदि लंबाई छोटी है तो Too Small प्रिंट करें
- unames में प्रत्येक उपयोगकर्ता नाम u_name के लिए:
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#include <iostream> #include <vector> #include <exception> using namespace std; class BadLengthException{ public: int x; BadLengthException(int n) { x=n; } int what() const throw(){return x;} }; bool validation(string u_name) { bool isValid = true; int n = u_name.length(); if(n < 5) { throw BadLengthException(n); } for(int i = 0; i < n-1; i++) { if(u_name[i] == 'w' && u_name[i+1] == 'w') { isValid = false; } } return isValid; } int main() { vector<string> unames = {"amit", "to", "paul_tim", "greg_harry", "towwer"}; for(int i = 0; i < unames.size(); i++){ string u_name = unames[i]; try { bool isValid = validation(u_name); if(isValid) { cout << "Valid" << '\n'; } else { cout << "Invalid" << '\n'; } } catch (BadLengthException e) { cout << "Too short: " << e.what() << '\n'; } } } इनपुट
{"amit", "to", "paul_tim", "greg_harry", "towwer"}आउटपुट
Too short: 4 Too short: 2 Valid Valid Invalid