ধরা যাক ইউজারনেমের একটি স্ট্রিং দেওয়া আছে। আমাদের যাচাই করতে হবে ইউজারনেমটি বৈধ কিনা কিছু শর্ত অনুযায়ী। ৫ অক্ষরের চেয়ে ছোট হলে কাস্টম এক্সেপশন থ্রো করতে হবে। বৈধ হলে "Valid", অবৈধ হলে "Invalid", ছোট হলে এক্সেপশন।
বৈধতা শর্ত:
- ইউজারনেম কমপক্ষে ৫ অক্ষরের হতে হবে
- সংশ্লিষ্ট 'w' দুটি একসাথে থাকবে না
উদাহরণস্বরূপ, unames = ["amit", "to", "paul_tim", "greg_harry", "towwer"] হলে আউটপুট: [Too short: 4, Too short: 2, Valid, Valid, Invalid]
সমাধানের ধাপসমূহ
- BadLengthException ক্লাস তৈরি করুন যাতে length সংরক্ষণ করা যায়
- validation(u_name) ফাংশন:
- যদি দৈর্ঘ্য < 5 হয়, তবে BadLengthException থ্রো করুন
- লুপ চালিয়ে consecutive 'w' চেক করুন
- বৈধ হলে true, অবৈধ হলে false রিটার্ন করুন
- main-এ প্রতিটি ইউজারনেমের জন্য try-catch দিয়ে ভ্যালিডেট করুন
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন:
#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