justinpuckett

Untitled

May 26th, 2015
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.01 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5.  
  6. bool isValid(const string& cardNumber)
  7. {
  8.     if ((sumOfDoubleEvenPlace(cardNumber) + SumOfOddPlace(cardNumber)) % 10 != 0)
  9.     {
  10.         return false;
  11.     }
  12.     else if ( startsWith(cardNumber) == false)
  13.     {
  14.         return false;
  15.     }
  16.     else if (cardNumber.length() > 16 || cardNumber.length() < 13)
  17.     {
  18.         return false;
  19.     }
  20.     else
  21.     {
  22.         return true;
  23.     }
  24.  
  25.  
  26. }
  27. bool startsWith(const string& cardNumber, const string& substr)
  28. {
  29.     if (cardNumber[0] - '0' == 4 || cardNumber[0] - '0' == 5 || cardNumber[0] - '0' == 6 ||
  30.         (cardNumber[0] - '0' == 3 && cardNumber[1] - '0' == 7))
  31.     {
  32.         return true;
  33.     }
  34.     else
  35.     {
  36.         return false;
  37.     }
  38. }
  39.  
  40. //----------------------------------------------------------------------------------------------------
  41. int getDigit(int number)
  42. {
  43.     if ((number - '0') * 2 >= 10)
  44.     {
  45.         int A = (number - '0') * 2 - 10;
  46.         int B = ((number - '0') * 2) / 10;
  47.         int C = A + B;
  48.         return C;
  49.     }
  50.     else
  51.     {
  52.         number = (number - '0') * 2;
  53.         return number;
  54.     }
  55. }
  56. //----------------------------------------------------------------------------------
  57. int sumOfDoubleEvenPlace(const string& cardNumber)
  58. {
  59.     int Even = 0;
  60.     int N = 0;
  61.     while (N < cardNumber.length())
  62.     {
  63.         if (N == 0 || N % 2 == 0)
  64.         {
  65.             int number = cardNumber[N];
  66.             Even = Even + getDigit(number);
  67.         }
  68.  
  69.         N++;
  70.     }
  71.     return Even;
  72. }
  73. //----------------------------------------------------------------------------------
  74. int SumOfOddPlace(const string& cardNumber)
  75. {
  76.     int Odd = 0;
  77.     int N = 1;
  78.     while (N < cardNumber.length())
  79.     {
  80.         if (N == 1 || N % 2 != 0)
  81.         {
  82.             Odd = Odd + cardNumber[N] - '0';
  83.         }
  84.         N++;
  85.     }
  86.    
  87.     return Odd;
  88. }
  89. //-----------------------------------------------------------------------------------
  90. int main()
  91. {
  92.     cout << " Enter a credit card # :";
  93.     string cardNumber;
  94.     getline(cin, cardNumber);
  95.  
  96.     if (isValid(cardNumber))
  97.     {
  98.         cout << cardNumber << " is a valid number \n";
  99.     }
  100.  
  101.     else
  102.     {
  103.         cout << cardNumber << " is not a valid number \n";
  104.     }
  105.  
  106.     return 0;
  107.  
  108. }
Advertisement
Add Comment
Please, Sign In to add comment