Description
The purpose of this challenge is to manually manipulate character arrays. This challenge validates a string against password validity rules.
Requirements
- Make sure you follow all the steps in order. As you read the instructions below, glance at the sample main() function to get a better understanding of the requirement.
- Declare three variables in main: min_uppers, min_lowers, min_length
- Write a function int get_int(char prompt[], int min, int max). This function will prompt the user to enter a number that must be between min and max, inclusively. Use this function in main:
- to ask the user how many upper case numbers are required. Allow the user to enter at least 1 but not more than 3
- to ask the user how many lower case numbers are required. Allow the user to enter at least 1 but not more than 3
- to ask the user for the minimum length of the password. Allow the user to enter at least 6 but not more than 8
- In the get_int() function, make sure to specify the prompt parameter as a c-string. This parameter represents the text displayed to the user in the function. It is okay to use cout/cin in this function since that is its job.
- Write a function int validate_password(char pwd[], int min_uppers, int min_lowers, int min_length). This function will return different integer values to indicate why the validation failed. For example, you could:
- return a 1 to indicate that the password is too short
- return a 2 to indicate that the password is too long. Enforce a maximum length of 12 characters.
- return a 3 to indicate that the password does not have enough upper case characters
- …and so on
- return a 0 (zero) to indicate that the password passed in satisfies all the validation requirements.
- Then, ask the user to enter sample passwords and use the validate_password() function to validate it against the requirements specified by the user (See sample interaction)
Sample main()
int main()
{
char password[20];
int min_uppers, min_lowers, min_length;
// ask for minimum number of uppers
min_uppers = get_int("How many upper case characters are required?", 1, 3);
// ask for minimum number of lowers
min_lowers = get_int("How many lower case characters are required?", 1, 3);
// ask for minimum password length
// ask for a password, use cin.getline()
int val = validate_password(password, min_uppers, min_lowers, min_length);
while (val != 0)
{
switch(val)
{
case 1: cout << "password too short\n";
break;
case 2: cout << "password too long\n";
break;
// more cases here to display messages
// on the other failed validations
// see requirement step #5
}
// ask for a password again
// validate it again
val = validate_password(password, min_uppers,
min_lowers, min_length);
}
cout << "That password is OK\n";
return 0;
}
Sample Interaction / Output
How many uppers required (1-3)? 2 How many lowers required (1-3)? 1 What is the minimum length (6-8)? 5 : NUMBER MUST BE WITHIN RANGE What is the minimum length (6-8)? 6 OK Enter your password: Iamawesome Password invalid - Needs at least 2 uppers Enter your password: IAWESOME Password invalid - Needs at least 1 lower Enter your password: IRock Password invalid - too short Enter your password: IamSimplyAwesome Password invalid - too long Enter your password: IamAwesome That password is OK
LEGEND
PROGRAM OUTPUT
USER INPUT
FROM INPUT
CATALOG ID: CPP-CHAL0014
Print Requirements
