私はこの問題に数え切れないほど取り組んできましたが、問題が何であるかを見つけることができません。私は問題のすべての部分を変更してテストしましたが、常に奇妙で誤った結果が得られました。コンパイラが誤動作しているのではないかと思い始めています。
これが私がやろうとしていることです。パスワードの入力を求めるプログラムを開発し、プログラムは次の条件が満たされていることを確認します。
6文字以上の長さ。
少なくとも1つの大文字が含まれています。
少なくとも1つの小文字が含まれています。
少なくとも1桁含まれています。
入力したパスワードが基準を満たしていない場合、プログラムは理由を表示し、再入力を求めるプロンプトを表示する必要があります。パスワードが適切な場合は、メッセージが表示され、プログラムが終了します。助けてください!
注:これはコンソール32プログラムです。
#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <cctype>
#include "ctype.h"
using namespace std;
// Function prototype
bool lengthTest(char *);
bool lowCaseTest(char []);
bool upCaseTest(char []);
bool digitTest(char []);
const int SIZE = 20;
int main()
{
// Buffer to hold the string.
char password[SIZE];
int sumofbool;
// Program Intro Display
cout << "----PASSWORD VERIFIER PROGRAM----\n\n";
cout << "Enter a password that meets the following criteria:\n"
<< "-Minimum of 6 characters in length.\n"
<< "-Contains at least one uppercase and one lowercase letter.\n"
<< "-Contains at least one digit.\n\n";
cout << "->";
// Get input from user.
cin.getline(password, SIZE);
sumofbool = lengthTest(password) + lowCaseTest(password) + upCaseTest(password)
+ digitTest(password);
// if 1 or more of the 4 functions is not true, display why and prompt for re-entry.
while (sumofbool < 4)
{
if (!lengthTest(password))
cout << "Error, password must be at least 6 characters long.\n";
if (!upCaseTest(password))
cout << "Error, password must contain at least one upper case letter.\n";
if (!lowCaseTest(password))
cout << "Error, password must contain at least one lower case letter.\n";
if (!digitTest(password))
cout << "Error, password must contain at least one digit.\n";
cout << "Please re-enter password: ";
// prompt for re-entry and call functions to test input.
cin.getline(password, SIZE);
sumofbool = lengthTest(password) + lowCaseTest(password) + upCaseTest(password);
+ digitTest(password);
}
// if conditions for password are met, display message.
cout << "\nYou entered a valid password.\n\n";
return 0;
}
//*********LENGTH TEST FUNCTION***********
bool lengthTest(char *str)
{
int numChar = 0;
bool validlength = false;
for (int cnt = 0; cnt < SIZE; cnt++)
{
while (*str != 0)
str++, numChar++;
}
if (numChar >= 6)
validlength = true;
return validlength;
}
//*********LOWERCASE LETTER TEST FUNCTION*********
bool lowCaseTest(char pass[])
{
for (int cnt = 0; cnt < SIZE; cnt++)
{
if (islower(pass[cnt]))
return true;
}
return false;
}
//********CAPITAL LETTER TEST FUNCTION*********
bool upCaseTest(char pass[])
{
for (int cnt = 0; cnt < 20; cnt++)
{
if (isupper(pass[cnt]))
return true;
}
return false;
}
//**********DIGIT TEST FUNCTION************
bool digitTest(char pass[])
{
for (int cnt = 0; cnt < 20; cnt++)
{
if (isdigit(pass[cnt]))
return true;
}
return false;
}