Skip to main content
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
added 364 characters in body
Source Link
Cliff B
  • 69.3k
  • 4
  • 33
  • 56

#include <stdio.h> #include <cs50.h>

int main(void) {

#include <stdio.h>
#include <cs50.h>

int main(void)
{

    long long cc;

    //get user input for cc
    do
    {
        cc = get_long_long("Number: ");

    } while (cc <= 0);

    //check if cc length is 13, 15, 16

    long long num = cc;
    int digits = 1;

    do
    {
        num /= 10;
        digits++;
    } while (num >= 10);

     if (digits != 13 && digits != 15 && digits != 16)
    {
        printf("Invaild number\n");
        return 1;
    }

    //check if cc is legit according to Luhn's Algorithm

    int number[digits], even[digits];
    int i, sum = 0;

    for (i = 0; i < digits; i++)
    {
        number[i] = cc % 10;
        cc /= 10;

        if (i % 2 == 1)
        {
            even[i] = number[i];
            even[i] *= 2;
        }
        if (even[i] >= 10)
        {
            even[i+1] = even[i] / 10;
            even[i] = even[i] % 10;
        }

        sum += even[i];

        if (i % 2 == 0)
        {
            sum += number[i];
        }

    }

    if (sum % 10 != 0)
    {
        printf("INVALID\n");
    }

    else
    {
        //check if cc is 15 digits starting with 34, 37
        if (digits == 15 && number[14] == 3 && (number[13] == 4 || number[13] == 7))
        {
            printf("AMEX\n");
        }

        //check if cc is 16 digits starting with 51, 52, 53, 54, 55
        if (digits == 16 && number[15] == 5 && (number[14] == 1 || number[14] == 2 || number[14] == 3 || number[14] == 4 || number[14] == 5))
        {
            printf("MASTERCARD\n");
        }

        //check if cc is 13 or 16 digits starting with 4
        if ((digits == 13 && number[12] == 4) || (digits == 16 && number[15] == 4))
        {
            printf("VISA\n");
        }
    }

    return 0;

}

}

#include <stdio.h> #include <cs50.h>

int main(void) {

long long cc;

//get user input for cc
do
{
    cc = get_long_long("Number: ");

} while (cc <= 0);

//check if cc length is 13, 15, 16

long long num = cc;
int digits = 1;

do
{
    num /= 10;
    digits++;
} while (num >= 10);

 if (digits != 13 && digits != 15 && digits != 16)
{
    printf("Invaild number\n");
    return 1;
}

//check if cc is legit according to Luhn's Algorithm

int number[digits], even[digits];
int i, sum = 0;

for (i = 0; i < digits; i++)
{
    number[i] = cc % 10;
    cc /= 10;

    if (i % 2 == 1)
    {
        even[i] = number[i];
        even[i] *= 2;
    }
    if (even[i] >= 10)
    {
        even[i+1] = even[i] / 10;
        even[i] = even[i] % 10;
    }

    sum += even[i];

    if (i % 2 == 0)
    {
        sum += number[i];
    }

}

if (sum % 10 != 0)
{
    printf("INVALID\n");
}

else
{
    //check if cc is 15 digits starting with 34, 37
    if (digits == 15 && number[14] == 3 && (number[13] == 4 || number[13] == 7))
    {
        printf("AMEX\n");
    }

    //check if cc is 16 digits starting with 51, 52, 53, 54, 55
    if (digits == 16 && number[15] == 5 && (number[14] == 1 || number[14] == 2 || number[14] == 3 || number[14] == 4 || number[14] == 5))
    {
        printf("MASTERCARD\n");
    }

    //check if cc is 13 or 16 digits starting with 4
    if ((digits == 13 && number[12] == 4) || (digits == 16 && number[15] == 4))
    {
        printf("VISA\n");
    }
}

return 0;

}

#include <stdio.h>
#include <cs50.h>

int main(void)
{

    long long cc;

    //get user input for cc
    do
    {
        cc = get_long_long("Number: ");

    } while (cc <= 0);

    //check if cc length is 13, 15, 16

    long long num = cc;
    int digits = 1;

    do
    {
        num /= 10;
        digits++;
    } while (num >= 10);

     if (digits != 13 && digits != 15 && digits != 16)
    {
        printf("Invaild number\n");
        return 1;
    }

    //check if cc is legit according to Luhn's Algorithm

    int number[digits], even[digits];
    int i, sum = 0;

    for (i = 0; i < digits; i++)
    {
        number[i] = cc % 10;
        cc /= 10;

        if (i % 2 == 1)
        {
            even[i] = number[i];
            even[i] *= 2;
        }
        if (even[i] >= 10)
        {
            even[i+1] = even[i] / 10;
            even[i] = even[i] % 10;
        }

        sum += even[i];

        if (i % 2 == 0)
        {
            sum += number[i];
        }

    }

    if (sum % 10 != 0)
    {
        printf("INVALID\n");
    }

    else
    {
        //check if cc is 15 digits starting with 34, 37
        if (digits == 15 && number[14] == 3 && (number[13] == 4 || number[13] == 7))
        {
            printf("AMEX\n");
        }

        //check if cc is 16 digits starting with 51, 52, 53, 54, 55
        if (digits == 16 && number[15] == 5 && (number[14] == 1 || number[14] == 2 || number[14] == 3 || number[14] == 4 || number[14] == 5))
        {
            printf("MASTERCARD\n");
        }

        //check if cc is 13 or 16 digits starting with 4
        if ((digits == 13 && number[12] == 4) || (digits == 16 && number[15] == 4))
        {
            printf("VISA\n");
        }
    }

    return 0;

}
edited title
Link

HELP ME!! CS50 pset1 credit.c says INVALID andbut when I debug it runs finesays AMEX?

Source Link

HELP ME!! CS50 pset1 credit.c says INVALID and when I debug it runs fine?

enter image description here

#include <stdio.h> #include <cs50.h>

int main(void) {

long long cc;

//get user input for cc
do
{
    cc = get_long_long("Number: ");

} while (cc <= 0);

//check if cc length is 13, 15, 16

long long num = cc;
int digits = 1;

do
{
    num /= 10;
    digits++;
} while (num >= 10);

 if (digits != 13 && digits != 15 && digits != 16)
{
    printf("Invaild number\n");
    return 1;
}

//check if cc is legit according to Luhn's Algorithm

int number[digits], even[digits];
int i, sum = 0;

for (i = 0; i < digits; i++)
{
    number[i] = cc % 10;
    cc /= 10;

    if (i % 2 == 1)
    {
        even[i] = number[i];
        even[i] *= 2;
    }
    if (even[i] >= 10)
    {
        even[i+1] = even[i] / 10;
        even[i] = even[i] % 10;
    }

    sum += even[i];

    if (i % 2 == 0)
    {
        sum += number[i];
    }

}

if (sum % 10 != 0)
{
    printf("INVALID\n");
}

else
{
    //check if cc is 15 digits starting with 34, 37
    if (digits == 15 && number[14] == 3 && (number[13] == 4 || number[13] == 7))
    {
        printf("AMEX\n");
    }

    //check if cc is 16 digits starting with 51, 52, 53, 54, 55
    if (digits == 16 && number[15] == 5 && (number[14] == 1 || number[14] == 2 || number[14] == 3 || number[14] == 4 || number[14] == 5))
    {
        printf("MASTERCARD\n");
    }

    //check if cc is 13 or 16 digits starting with 4
    if ((digits == 13 && number[12] == 4) || (digits == 16 && number[15] == 4))
    {
        printf("VISA\n");
    }
}

return 0;

}

Hi I can't figure out the problem of my code because debug50 runs fine... It says INVALID and then when I debug it says AMEX. same for VISA. what would be the problem?? Thanks in advance!