컴공생의 다이어리
[c++] 강력한 패스워드 만들기 본문
문제
다음 기준을 충족하는 강력한 패스워드를 생성하는 프로그램을 작성하시오.
-
길이는 최소한 6이상이어야 함
-
최소한 1개 이상의 숫자가 있어야 함
-
최소한 1개 이상의 영어 대문자가 있어야 함
-
최소한 1개 이상의 영어 소문자가 있어야 함
-
최소한 1개 이상의 특수문자가 있어야 함
-
특수문자 : !@#$%^&*()-+
코드
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
string WARNINGS[] ={
"길이는 최소한 6이상이어야 합니다.",
"최소한 1개 이상의 숫자가 있어야 합니다.",
"최소한 1개 이상의 영어 소문자가 있어야 합니다.",
"최소한 1개 이상의 영어 대문자가 있어야 합니다.",
"최소한 1개 이상의 특수 문자가 있어야 합니다."
};
int main(){
string password;
int i, j, Digit, Lower, Upper, Special;
int a;
int specialList[12] = { '!','@','#','$','%','^','&','*','(',')','-','+' };
Digit = 0;
Lower = 0;
Upper = 0;
Special = 0;
while (1){
cout << "password : ";
cin >> password;
if (password.length() >= 1 && password.length() <= 20)
break;
else
cout << "다시 입력하세요!" << endl;
}
a = password.length();
for (i = 0; i < a; i++) {
if (48 <= password[i] && password[i] <= 57) //Digit check
Digit = 1;
else if (97 <= password[i] && password[i] <= 122) //Lower_case check
Lower = 1;
else if (65 <= password[i] && password[i] <= 90) //Upper_case check
Upper = 1;
else{ //Special_characters check
for (j = 0; j < 12; j++){
if (password[i] == specialList[j]){
Special = 1;
break;
}
}
}
}
if (a < 6)
cout << WARNINGS[0] << endl;
if (Digit == 0)
cout << WARNINGS[1] << endl;
if (Lower == 0)
cout << WARNINGS[2] << endl;
if (Upper == 0)
cout << WARNINGS[3] << endl;
if (Special == 0)
cout << WARNINGS[4] << endl;
if (a >= 6 && Digit == 1 && Lower == 1 && Upper == 1 && Special == 1)
cout << "적절한 패스워드 입니다!" << endl;
return 0;
}
출력결과
728x90
반응형
'Development > C & C++' 카테고리의 다른 글
[c/c++] 연산자 우선순위(Operator Priority) (0) | 2021.03.18 |
---|---|
[c] scanf 데이터 입력 (0) | 2021.03.16 |
[c++] 숫자로 주어진 시간을 텍스트로 변환 (0) | 2021.02.15 |
[c++] 두 지점 A, B 사이에 위치할 수 있는 C (0) | 2021.02.14 |
[c++] 입력받은 문자열에서의 특정 문자 빈도 수 (0) | 2021.02.13 |
Comments