Работа над упражнением для моего класса. Мой учитель хочет, чтобы мы работали со строкой C, а не с классом строк. Мы должны использовать функции bool и команды C -string, чтобы определить, достаточно ли надежен пароль. Я думаю, что я почти закончил, но у меня где-то должна быть ошибка Вот что у меня получилось:
#include <iostream>
#include <cstring>
#include <cctype>
bool checklength(char[]);
bool checkdigit(char[]);
bool checklower(char[]);
bool checkupper(char[]);
bool checkspecial(char[]);
int main()
{
char pwdstr[20];
std::cout << "Enter your password\n";
std::cin >> pwdstr;
if (checklength(pwdstr) &&
checkdigit(pwdstr) &&
checklower(pwdstr) &&
checkupper(pwdstr) &&
checkspecial(pwdstr))
{
std::cout << "Your password is strong.\n";
}
else
{
std::cout << "Your password is too weak!\n";
}
}
bool checklength(char p[])
{
int i;
int len = strlen(p);
for (i = 0; i < len - 1;)
{
if (isalnum(p[i]))
{
i++;
}
}
if (i < 6)
{
std::cout << "Your password must be at least 6 characters
long.\n";
return false;
}
else
{
return true;
}
}
bool checkdigit(char p[])
{
int i;
int len = strlen(p);
for (i = 0; i < len - 1;)
{
if (isdigit(p[i]))
{
i++;
}
}
if (i < 1)
{
std::cout << "Your password must have at least 1 digit in
it.\n";
return false;
}
else
{
return true;
}
}
bool checklower(char p[])
{
int i;
int len = strlen(p);
for (i = 0; i < len - 1;)
{
if (islower(p[i]))
{
i++;
}
}
if (i < 1)
{
std::cout << "Your password must have at least 1 lower case
letter in it.\n";
return false;
}
else
{
return true;
}
}
bool checkupper(char p[])
{
int i;
int len = strlen(p);
for (i = 0; i < len - 1;)
{
if (isupper(p[i]))
{
i++;
}
}
if (i < 1)
{
std::cout << "Your password must have at least 1 upper case
letter in it.\n";
return false;
}
else
{
return true;
}
}
bool checkspecial(char p[])
{
int i;
int len = strlen(p);
for (i = 0; i < len - 1;)
{
if (ispunct(p[i]))
{
i++;
}
}
if (i < 1)
{
std::cout << "Your password must have at least 1 special
character in it.\n";
return false;
}
else
{
return true;
}
}
Мой текущий вывод до того, как я добавил описания того, что пошло не так, до возвращения false, заключался в том, что по какой-то причине все было правильно. Теперь все, что я пытаюсь сказать, говорит о том, что у меня не работает функция checklength, что пароль слишком короткий.
Спасибо всем