C++でパスワードの強度をチェックするプログラム
パスワード文字を含む文字列入力が与えられた場合、タスクはパスワードの強度をチェックすることです。
パスワードの強みは、パスワードが簡単に推測されるか、解読されるかを判断するときです。強さは、弱い、平均、強いから変化する必要があります。強度を確認するには、以下の点を確認する必要があります-
- パスワードは8文字以上である必要があります。
- 小文字のアルファベットを1つ含める必要があります。
- 大文字のアルファベットを1つ含める必要があります
- 数字が含まれている必要があります
- 次のような特殊文字が含まれている必要があります:!@#$%^&*()> <,. + =-
簡単に推測できるパスワード「tutorialspoint」があるように、彼が与えたパスワードは小文字しか含まれていないので「弱い」と言えますが、パスワード「Tutorialspoint @ 863!」大文字と小文字の両方、数字、特殊文字があり、8文字より長いため、パスワードを強化するためのすべての条件を満たすため、強力です。
強力なパスワードの特性の半分以上を満たすパスワードがある場合、そのパスワードは中程度と見なされます。パスワード「tutorialspoint12」と同様に、小文字、数字、長さが8文字を超える中程度と見なされます。
例
Input: tutoriAlspOint!@12 Output: Strength of password:-Strong Explanation: Password has 1 lowercase, 1 uppercase, 1 special character, more than 8 characters long and a digit, hence the password is strong. Input: tutorialspoint Output: Strength of password:-Weak
特定の問題を解決するために使用するアプローチ −
- パスワードの文字列出力を取得します。
- パスワードの強度を判断するためのすべての要素について、パスワードを確認してください。
- 要因に応じて、パスワードの強度を印刷します。
アルゴリズム
Start Step 1 ⇒ In function void printStrongNess(string& input) Declare and initialize n = input.length() Declare bool hasLower = false, hasUpper = false Declare bool hasDigit = false, specialChar = false Declare string normalChars = "abcdefghijklmnopqrstu" "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 " Loop For i = 0 and i < n and i++ If (islower(input[i])) Set hasLower = true If (isupper(input[i])) Set hasUpper = true If (isdigit(input[i])) Set hasDigit = true Set size_t special = input.find_first_not_of(normalChars) If (special != string::npos) Set specialChar = true End Loop Print "Strength of password:-" If (hasLower && hasUpper && hasDigit && specialChar && (n >= 8)) Print "Strong" else if ((hasLower || hasUpper) && specialChar && (n >= 6)) Print "Moderate" else print "Weak" Step 2 ⇒ In function int main() Declare and initialize input = "tutorialspoint!@12" printStrongNess(input) Stopを宣言して初期化します
例
#include <iostream> using namespace std; void printStrongNess(string& input) { int n = input.length(); // Checking lower alphabet in string bool hasLower = false, hasUpper = false; bool hasDigit = false, specialChar = false; string normalChars = "abcdefghijklmnopqrstu" "vwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 "; for (int i = 0; i < n; i++) { if (islower(input[i])) hasLower = true; if (isupper(input[i])) hasUpper = true; if (isdigit(input[i])) hasDigit = true; size_t special = input.find_first_not_of(normalChars); if (special != string::npos) specialChar = true; } // Strength of password cout << "Strength of password:-"; if (hasLower && hasUpper && hasDigit && specialChar && (n >= 8)) cout << "Strong" << endl; else if ((hasLower || hasUpper) && specialChar && (n >= 6)) cout << "Moderate" << endl; else cout << "Weak" << endl; } int main() { string input = "tutorialspoint!@12"; printStrongNess(input); return 0; }
出力
Strength of password:-Moderate
-
C++でべき等行列をチェックするプログラム
行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列がべき等行列であるかどうかを確認する必要があります かどうか。 べき等行列 行列「M」はべき等行列と呼ばれます 行列「M」にそれ自体を掛けたものだけが同じ行列「M」を返す場合、つまり M * M=M。 以下の例のように- 上記の行列はそれ自体で乗算され、同じ行列を返すと言えます。したがって、マトリックスはIデポテンツマトリックスです。 。 例 Input: m[3][3] = { {2, -2, -4}, {-1, 3,
-
C++で対角行列とスカラー行列をチェックするプログラム
行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列が対角であるかどうかを確認する必要があります およびスカラー 対角の場合、行列かどうか およびスカラー マトリックスを作成し、結果にyesを出力します。 対角行列 正方行列m[][]は、主対角を除く要素がゼロの場合にのみ対角行列になります。 下の図のように- ここで、赤の要素は主対角線であり、主対角線がゼロであることを除いてゼロ以外の残りの要素であり、対角行列になっています。 。 例 Input: m[3][3] = { {7, 0, 0},