Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions