История изменений
Исправление
merhalak,
(текущая версия)
:
#include <stdio.h>
#include <ctype.h>
#define MINLENGTH 6
#define MAXLENGTH 18
enum validation { INVALID = 0, ISUPPER = 1, ISLOWER = 2, ISDIGIT = 4 };
int
main(void)
{
char password[MAXLENGTH + 1];
int index = 0;
int next;
enum validation valid = INVALID;
while ((next = getchar()) != '\n' && index < MAXLENGTH) {
if (isdigit(next)) {
valid = valid | ISDIGIT;
} else if (isupper(next)) {
valid = valid | ISUPPER;
} else if (islower(next)) {
valid = valid | ISLOWER;
}
password[index++] = next;
}
password[index] = '\0';
if (valid != (ISDIGIT | ISLOWER | ISUPPER) || index < MINLENGTH) {
printf("Invalid, %s", password);
} else {
printf("Valid, %s", password);
}
return 0;
}
Я просто так вывожу пароль. Ты не парься. И да, массив 18+1 учитывая '\0' в конце.
Исправление
merhalak,
:
#include <stdio.h>
#include <ctype.h>
#define MINLENGTH 6
#define MAXLENGTH 18
enum validation { INVALID = 0, ISUPPER = 1, ISLOWER = 2, ISDIGIT = 4 };
int main(void)
{
char password[MAXLENGTH + 1];
int index = 0;
int next;
enum validation valid = INVALID;
while ((next = getchar()) != '\n' && index < MAXLENGTH) {
if (isdigit(next)) {
valid = valid | ISDIGIT;
} else if (isupper(next)) {
valid = valid | ISUPPER;
} else if (islower(next)) {
valid = valid | ISLOWER;
}
password[index++] = next;
}
password[index] = '\0';
if (valid != (ISDIGIT | ISLOWER | ISUPPER) || index < MINLENGTH) {
printf("Invalid, %s", password);
} else {
printf("Valid, %s", password);
}
return 0;
}
Я просто так вывожу пароль. Ты не парься. И да, массив 18+1 учитывая '\0' в конце.
Исходная версия Deleted, :
#include <stdio.h>
#include <ctype.h>
#define MINLENGTH 6
#define MAXLENGTH 18
enum validation { INVALID = 0, ISUPPER = 1, ISLOWER = 2, ISDIGIT = 4 };
int main(void)
{
char password[MAXLENGTH + 1];
int index = 0;
int next;
enum validation valid = INVALID;
while ((next = getchar()) != '\n' && index < MAXLENGTH) {
if (isdigit(next)) {
valid = valid | ISDIGIT;
} else if (isupper(next)) {
valid = valid | ISUPPER;
} else if (islower(next)) {
valid = valid | ISLOWER;
}
password[index++] = next;
}
password[index] = '\0';
if (valid != (ISDIGIT | ISLOWER | ISUPPER) || index < MINLENGTH) {
printf("Invalid, %s", password);
} else {
printf("Valid, %s", password);
}
return 0;
}