Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

작은 사용자 이름에 대한 예외를 정의하고 사용자 이름을 확인하는 C++ 프로그램

<시간/>

사용자 이름 문자열이 있고 몇 가지 조건에 따라 사용자 이름이 유효한지 여부를 확인해야 한다고 가정합니다. 따라서 사용자 이름의 길이가 5자 미만일 때 throw되는 예외를 정의해야 합니다. 유효한 사용자 이름에 대해 "유효함"을 반환하고 잘못된 사용자 이름에 대해 "무효"를 반환하고 더 작은 사용자 이름에 대해 예외를 throw해야 합니다. 유효한 사용자 이름 조건은 -

  • 사용자 이름은 5자여야 합니다.

  • 사용자 이름에 두 개의 연속 'w'가 있으면 안 됩니다.

따라서 입력이 unames =["amit", "to", "paul_tim", "greg_harry", "towwer"]와 같으면 출력은 [Too short:4, Too short:2, Valid, Valid , Invalid] 처음 두 개는 너무 작고 마지막 하나에는 두 개의 연속 'w'가 있기 때문입니다. 다른 사람들은 괜찮습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • BadLengthExcaption이라는 예외 정의

  • 메시지 길이를 반환합니다.

  • validation() 함수를 정의하면 u_name이 필요합니다.

  • isValid :=참

  • n :=u_name의 크기

  • n <5인 경우:

    • BadLengthException(n)

      발생
  • initialize i :=0의 경우 i

    • u_name[i]이 'w'와 같고 u_name[i + 1]이 'w'와 같으면:

      • isValid :=거짓

  • 유효한 반환

  • 기본 방법에서 다음을 수행합니다.

  • unames의 모든 사용자 이름 u_name에 대해 수행

    • 확인(u_name)

    • 유효한 경우 유효한 인쇄 유효

    • 그렇지 않으면 잘못된 인쇄 INVALID

      일 때
    • 그렇지 않으면 길이가 작은 경우 너무 작음

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#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