Challange 1# Not a pro but I think it works. Thanks

+2 Sukhchain Singh · November 11, 2015
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <string.h>


int main()
{
    char Name[10];
    char z;
    char confirm;
    int num=0;
    int a,b,c,d=0;
    printf("Enter Password upto 6 letters, enter each letter 1 by 1 and press enter. \n");
    printf("it must contain 1 uppercase letter and 1 lowercase and 1 digit and 1 special character '$'. \n");


        scanf("\n %c", &Name[0]);
        scanf("\n %c", &Name[1]);
        scanf("\n %c", &Name[2]);
        scanf("\n %c", &Name[3]);
        scanf("\n %c", &Name[4]);
        scanf("\n %c", &Name[5]);

        printf("You chose this password : %s \n",Name);

        num++;

            if ((z=Name[0]) && (isupper(z)))
                {
                a=1;
                } else
            if ((z=Name[1]) && (isupper(z)))
                {
                a=1;
                } else
            if ((z=Name[2]) && (isupper(z)))
                {
                a=1;
                } else

            if ((z=Name[3]) && (isupper(z)))
                {
                a=1;
                } else
            if ((z=Name[4]) && (isupper(z)))
                {
                a=1;
                } else
            if ((z=Name[5]) && (isupper(z)))
                {
                a=1;
                } else {
                a=0;
                }

            if ((z=Name[0]) && (islower(z)))
                {
                b=1;
                } else
            if ((z=Name[1]) && (islower(z)))
                {
                b=1;
                } else
            if ((z=Name[2]) && (islower(z)))
                {
                b=1;
                } else

            if ((z=Name[3]) && (islower(z)))
                {
                b=1;
                } else
            if ((z=Name[4]) && (islower(z)))
                {
                b=1;
                } else
            if ((z=Name[5]) && (islower(z)))
                {
                b=1;
                } else {
                    b=0;
                }

            if ((z=Name[0]) && (isdigit(z)))
                {
                c=1;
                } else
            if ((z=Name[1]) && (isdigit(z)))
                {
                c=1;
                } else
            if ((z=Name[2]) && (isdigit(z)))
                {
                c=1;
                } else

            if ((z=Name[3]) && (isdigit(z)))
                {
                c=1;
                } else
            if ((z=Name[4]) && (isdigit(z)))
                {
                c=1;
                } else
            if ((z=Name[5]) && (isdigit(z)))
                {
                c=1;
                } else {
                    c=0;
                }

            if ((z=Name[0]) && (z=='$'))
                {
                d=1;
                } else
            if ((z=Name[1]) && (z=='$'))
                {
                d=1;
                } else
            if ((z=Name[2]) && (z=='$'))
                {
                d=1;
                } else

            if ((z=Name[3]) && (z=='$'))
                {
                d=1;
                } else
            if ((z=Name[4]) && (z=='$'))
                {
                d=1;
                } else
            if ((z=Name[5]) && (z=='$'))
                {
                d=1;
                } else {
                    d=0;
                }


    if ((a==1) && (b==1) && (c==1) && (d==1))
        {
            printf("well done password successfully changed.");

        } else {
                    printf("Wrong password");

                }


    return 0;
}

Post a Reply

Replies

Oldest  Newest  Rating
0 Linguist Llama · December 30, 2015
@Baba Iskandarov

While it's true that name is an array, and so scanf("%c", name) would be correct, name[0] is not an array and so scanf("%c", name[0]) would not be correct.

@Sukhchain Singh

Your code smells of guesswork. All whitespace serves the same purpose in format strings, so if you wrote "\n\n" instead of "\n " you would see the same thing happen... You should probably find out what that does by reading, rather than by guessing.
0 Baba Iskandarov · December 29, 2015
your name[] is array delete the '&' character in scanfs
0 Howard Sloat · November 14, 2015
You could try.............


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    char password[51];
    char ErrorMsg[256] = "The following format error(s) were found:\n";
    int strsize, i, errlength = strlen(ErrorMsg);
    int lengthflag = 0, digitflag = 0, upperflag = 0, punctflag = 0;
    
    puts("Please enter your password (it must be more than 8 characters long and \n");
    puts("contain at least 1 capital letter, a number and a punctuation character\n");
    
    gets(password);
    strsize = strlen(password);
    
    if(strsize < 8)
        strcat(ErrorMsg," Less than 8 characters long\n");
    
    for(i=0; i< strsize; i++ )
    {
        
        if(isdigit(password)) digitflag=1;
        if(isupper(password))  upperflag=1;
        if(ispunct(password))  punctflag=1;   
    }
    
    if(!digitflag) strcat(ErrorMsg, " Must have at least 1 numeric\n");
    if(!upperflag) strcat(ErrorMsg, " Must have at least 1 capital leter\n");
    if(!punctflag) strcat(ErrorMsg, " Must have at least 1 punctuation character\n");    
    
    if (strlen(ErrorMsg) > errlength) puts(ErrorMsg);
    
    puts("\nGoodbye\n");
    exit(0);
}
  • 1

C

107,002 followers
About

One of the most popular languages of all time.

Links
Moderators
Bucky Roberts Administrator