Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ định nghĩa ngoại lệ tên đăng nhập quá ngắn và kiểm tra hợp lệ

Giả sử chúng ta có danh sách tên đăng nhập và phải kiểm tra tính hợp lệ. Định nghĩa ngoại lệ ném ra khi độ dài tên < 5 ký tự. Trả về "Valid" nếu hợp lệ, "Invalid" nếu không hợp lệ, ném ngoại lệ nếu quá ngắn. Điều kiện hợp lệ:

  • Độ dài ít nhất 5 ký tự
  • Không có hai ký tự 'w' liên tiếp

Ví dụ: unames = ["amit", "to", "paul_tim", "greg_harry", "towwer"] → [Too short: 4, Too short: 2, Valid, Valid, Invalid]

Giải thuật

  • Định nghĩa lớp BadLengthException lưu độ dài
  • Hàm validation(u_name):
    • Nếu độ dài < 5: ném BadLengthException(n)
    • Kiểm tra cặp 'w' liên tiếp: nếu có, isValid = false
    • Trả về isValid
  • Main: duyệt unames, try-catch validation, in kết quả

Ví dụ minh họa

#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'; 
        } 
    } 
} 

Đầu vào

{"amit", "to", "paul_tim", "greg_harry", "towwer"}

Đầu ra

Too short: 4 Too short: 2 Valid Valid Invalid