Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để xác định ngoại lệ cho tên người dùng nhỏ và xác thực tên người dùng

Giả sử chúng ta có một chuỗi tên người dùng và chúng ta sẽ phải kiểm tra xem tên người dùng có hợp lệ hay không dựa trên một số điều kiện. Vì vậy, chúng tôi sẽ phải xác định một ngoại lệ được ném ra khi độ dài của tên người dùng nhỏ hơn 5 ký tự. Chúng tôi sẽ phải trả lại "Hợp lệ" cho tên người dùng hợp lệ, "Không hợp lệ" cho tên người dùng không hợp lệ và ném ngoại lệ cho tên người dùng nhỏ hơn. Điều kiện tên người dùng hợp lệ là -

  • Tên người dùng phải dài năm ký tự

  • Không được có hai chữ 'w' liên tiếp trong tên người dùng

Vì vậy, nếu đầu vào giống như unames =["amit", "to", "paul_tim", "greg_harry", "towwer"], thì đầu ra sẽ là [Quá ngắn:4, Quá ngắn:2, Hợp lệ, Hợp lệ , Không hợp lệ] bởi vì hai đầu tiên quá nhỏ và một cuối cùng có hai chữ 'w liên tiếp. Những người khác đều ổn.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định một ngoại lệ được gọi là BadLengthExcaption

  • nó sẽ trả về độ dài tin nhắn

  • Xác định xác thực hàm (), điều này sẽ lấy u_name,

  • isValid:=true

  • n:=kích thước của u_name

  • nếu n <5, thì:

    • ném một BadLengthException (n)

  • để khởi tạo i:=0, khi tôi

    • nếu u_name [i] giống với 'w' và u_name [i + 1] giống với 'w', thì:

      • isValid:=false

  • trả lại isValid

  • Từ phương thức chính, thực hiện như sau:

  • đối với tất cả tên người dùng u_name trong unames, thực hiện

    • xác thực (u_name)

    • nếu in hợp lệ HỢP LỆ

    • ngược lại khi bản in không hợp lệ INVALID

    • nếu không, khi chiều dài nhỏ, in Quá nhỏ

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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