Question: Hello! Can you help me modify this code so it is divided in more functions as listed below? Credit card numbers follow certain patterns. A

Hello! Can you help me modify this code so it is divided in more functions as listed below?

Credit card numbers follow certain patterns. A credit card number must have between 13 and 16 digits. The number must start with the following:

4 for Visa cards

5 for MasterCard cards

37 for American Express cards

6 for Discover cards

1). Double every second digit from right to left. If doubling of a digit results in a

two-digit number, add the two digits to get a single digit number.

2). Now add all single-digit numbers from Step 1.

4 + 4 + 8 + 2 + 3 + 1 + 7 + 8 = 37

3). Add all digits in the odd places from right to left in the card number.

6 + 6 + 0 + 8 + 0 + 7 + 8 + 3 = 38

4). Sum the results from Step 2 and Step 3.

37 + 38 = 75

5). If the result from Step 4 is divisible by 10, the card number is valid; otherwise, it is invalid. For example, the number 4388576018402626 is invalid, but the number 4388576018410707 is valid.

Write a program that prompts the user to enter a credit card number as a string. Display whether the number is valid. Design your program to use the following functions:

// Return 1 if the card number is valid otherwise 0.

int isValid(char * cardNumber)

// Get the result from Step 2

int sumOfDoubleEvenPlace(char * cardNumber)

// Return this number if it is a single digit, otherwise,

// return the sum of the two digits

int getDigit(int number)

// Return sum of odd-place digits in the card number

int sumOfOddPlace(char * cardNumber)

// Return 1 if substr is the prefix for cardNumber

int startsWith(char * cardNumber, char * substr)

#include #include int getDigitSum(int n) { int sum = 0; while (n > 0) { sum += (n % 10); n /= 10; } return sum; } int digits[20]; int main(void) { long long int number, temp; int doubleSum = 0; int sumOfDigits = 0; int cnt = 0; int i; printf("Enter card number: "); scanf("%lld", &number); temp = number; while (temp > 0 && cnt < 19) { digits[cnt] = temp % 10; cnt++; temp /= 10; } if (cnt < 12) { printf("Few digits"); return 0; } else if (cnt == 17) { printf("Many digits"); return 0; } for (i = 1; i < cnt; i+=2) doubleSum += getDigitSum(2 * digits[i]); sumOfDigits = 0; for (i = 0; i < cnt; i+=2) sumOfDigits += digits[i]; if(doubleSum+sumOfDigits %10 ==0) printf("1"); else printf("0"); }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!