63 126
Assignments Done
99,1%
Successfully Done
In July 2018

Answer to Question #43047 in C++ for nona

Question #43047
2. Compute the sum of single digit numbers obtained from step 1 above:
Sum of even single-digits = 4 + 4 + 8 + 2 + 3 + 1 + 7 + 8 = 37

3. Compute the sum of every odd digit from right to left:
Sum of odd digits = 6 + 6 + 0 + 8 + 0 + 7 + 8 + 3 = 38

4. Compute the sum of the results from step 2 and step 3:
Total sum = 37 + 38 = 75

5. If the total sum from step 4 is divisible by 10, the card number is valid. Otherwise
it’s not valid.

Is 75 divisible by 10 (without remainder)? No, the card number in this
example is Invalid.
Expert's answer
#include<iostream>
#include<string>
 
using namespacestd;
 
intmain() {
cout << "Enterthe card number: ";
string cardNumber;
cin >>cardNumber;
 
bool valid = true;
int sumOfOdd = 0;
int sumOfEven = 0;
 
// The credit card number muststart with 3, 4, 5 or 6.
if ((cardNumber[0] != '3') && (cardNumber[0] != '4') && (cardNumber[0] != '5') && (cardNumber[0] != '6')) {
  valid = false;
}
 
// The total number of digits ofa credit card number must be between 13 to 16 digits.
if ((cardNumber.length() < 13) || (cardNumber.length() > 16)) {
  valid = false;
}
 
// Luhn Rule
for (int i = 0; i <cardNumber.length(); i++) {
  char c =cardNumber[cardNumber.length() - i - 1];
  intnum = c - '0';
 
  if ((num< 0) || (num> 9)) {
valid = false;
  }
 
  if (i % 2 == 1) {
num = 2 *num;
if (num> 9) {
num =num / 10 +num % 10;
}
sumOfEven =sumOfEven + num;
  }
  else {
sumOfOdd =sumOfOdd + num;
  }
}
 
int sum =sumOfOdd + sumOfEven;
 
if (sum% 10 != 0) {
  valid = false;
}
 
 
if (valid) {
  cout << "Thecard is valid" << endl;
}
else {
  cout << "Thecard is invalid" << endl;
 }
return 0;
 
}
 
 
 

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be first!

Leave a comment

Ask Your question

Submit
Privacy policy Terms and Conditions