LINUX.ORG.RU

История изменений

Исправление 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;
}