0

パスワード検証プログラムが機能しません。私のループは 1 回だけ繰り返されるようです。「それ」を出力として入れて、常に繰り返されているかどうかを確認しましたが、そうではありません。ブール値が機能している理由はわかりませんが、1回だけ繰り返され、最初の文字が小文字の場合、大文字と数字が必要であると表示され、最初の文字が数字または大文字。これは宿題ですが、少し迷っています。どんな助けでも大歓迎です。

#include<iostream>
#include<string>
#include<cctype>



using namespace std; 


int main()
{
    const int LENGTH = 20;
    char pass[LENGTH];



    cout << "Enter a password, that's at least 6 characters long, one uppercase, one lowercase letter ";
    cout << " and one digit." << endl;
    cin.getline(pass,LENGTH);



    bool isdig = true;
    bool isdown = true;
    bool isup = true;
    bool correct = false; 





    for(int index = 0; correct == false; index++)
    {
        cout << "it" << endl;

        if(isupper(pass[index]) == 0)
        {isup = false;}

        if(islower(pass[index]) == 0)
        {isdown = false;}

        if(isdigit(pass[index]) == 0)
        {isdig = false;}



        if(isdig == true && isup == true && isdown == true)
        {correct = true;}



        if(index = LENGTH - 1)
        {
            if(isdig == false)
            {cout << "Your password needs a digit." << endl;}

            if(isup == false)
            {cout << "Your password needs an uppercase letter." << endl;}

            if(isdown == false)
            {cout << "Your password needs a lowercase letter." << endl;}

            cout << "Re-enter another password. " << endl;
            cin.getline(pass,LENGTH);

            index = 0;
            isdown = true;
            isup = true;
            isdig = true;
        }

    }


    system("pause");
    return 0;

}
4

2 に答える 2

1

問題はおそらく次の行です。

if(index = LENGTH - 1)

ここでtoの値を割り当てます。その式は常に true であるため、常にパスワードの再入力を求められます。LENGTH - 1index

于 2013-07-25T17:03:53.383 に答える