Получение ожидаемой ошибки неквалифицированного идентификатора с C ++ при попытке выполнить

0

Я работаю над назначением класса и продолжаю получать "ожидаемый unqualified-id" для "{" после определения моих типов bool в этой функции. Я не могу понять, почему я получаю эту ошибку, и это затрудняет выполнение моего задания без возможности запуска моей программы. Может ли кто-нибудь сказать мне, почему я получаю эту ошибку? Вот мой код

//Page 825 Problem 12

#include <iostream>
#include <string>
using namespace std;


//Function Prototype
bool testPassword(char []);

const int passLength = 21;
char password[passLength];

int main()
{
//Ask user to enter password matching the following criteria
cout << "Please enter a password at six characters long. \n"
<< "Password must also contain at least one uppercase and one lowercase letter. \n"
<< "Password must also contain at least one digit. \n"
<< "Please enter your password now \n";

cin.getline (password, passLength);

if (testPassword(password))
    cout << "Password entered is of the correct format and has been accepted.";

else
    cout << "Password does not meet criteria \n";


return 0;
}

//*******************************
//**Function to test password ***
//**to determine if it meets  ***
//**criteria listed           ***
//*******************************

//Test password to determine if it is at least six characters long
bool testPassword (char password[]);


bool lower;
bool upper;
bool digit;
bool length;

 {

    if (strlen(password) < 6)
        length = true;

    else
        length = false;
        cout << "Password must be at least 6 characters long.\n";


for (int k = 0; k < passLength; k++)
{
    if (islower(password[k])
        lower = true;
    else
        lower = false;
        cout << "Password must contain a lowercase letter.\n";


    if (isupper(password[k])
        upper = true;
    else
        upper = false;
        cout << "Password must contain an uppercase letter.\n";


    if (isdigit(password[k])
        digit = true;

    else
        digit = false;
        cout << "Password must contain a digit.\n";

}
if (lower && upper && digit && length == true)

        return true;

    else
        return false;
}
Теги:

3 ответа

0
Лучший ответ

testPassword: имеет значение ";" и конец строки, который он не должен иметь.

Переменные bool должны находиться внутри первого "{", а не до него.

  • 0
    Спасибо, ребята, это всегда простые вещи, которые я, кажется, скучаю = / ... Я действительно ценю быструю помощь =)
  • 0
    np Пожалуйста, нажмите кнопку «Вверх» или «Принять» в ответе, если он отвечает на ваш вопрос.
Показать ещё 1 комментарий
0

Эта часть находится в глобальной области:

bool testPassword (char password[]);   // <-- declaration of function
bool lower;                            // <-- global variables
bool upper;
bool digit;
bool length;
{               // <-- start of the scope? what does it belong to?
    ...

и это недействительно, вы не можете поместить программную логику в глобальную область действия... функции не могут быть просто вызваны "из ниоткуда"... если бы она уже была телом функции testPassword, она должна быть:

bool testPassword (char password[])
{
    bool lower;
    bool upper;
    bool digit;
    bool length;
    ...
}
0

Похоже, вы действительно этого хотите:

bool testPassword (char password[])
{
   bool lower;
   bool upper;
   bool digit;
   bool length;

if (strlen(password) < 6) {
    length = true;
}
else {
    length = false;
    cout << "Password must be at least 6 characters long.\n";
}
...

ЗАМЕТКИ:

  1. "testPassword()" с ";" является ФУНКЦИОНАЛЬНЫМ ПРОТОТИПОМ (не фактическое определение функции)

  2. В отличие от Python, только отступы не создают условный блок. Если вам нужно больше одной строки в блоке, вам нужны фигурные скобки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню