Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- bool isValid(const string& cardNumber)
- {
- if ((sumOfDoubleEvenPlace(cardNumber) + SumOfOddPlace(cardNumber)) % 10 != 0)
- {
- return false;
- }
- else if ( startsWith(cardNumber) == false)
- {
- return false;
- }
- else if (cardNumber.length() > 16 || cardNumber.length() < 13)
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- bool startsWith(const string& cardNumber, const string& substr)
- {
- if (cardNumber[0] - '0' == 4 || cardNumber[0] - '0' == 5 || cardNumber[0] - '0' == 6 ||
- (cardNumber[0] - '0' == 3 && cardNumber[1] - '0' == 7))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- //----------------------------------------------------------------------------------------------------
- int getDigit(int number)
- {
- if ((number - '0') * 2 >= 10)
- {
- int A = (number - '0') * 2 - 10;
- int B = ((number - '0') * 2) / 10;
- int C = A + B;
- return C;
- }
- else
- {
- number = (number - '0') * 2;
- return number;
- }
- }
- //----------------------------------------------------------------------------------
- int sumOfDoubleEvenPlace(const string& cardNumber)
- {
- int Even = 0;
- int N = 0;
- while (N < cardNumber.length())
- {
- if (N == 0 || N % 2 == 0)
- {
- int number = cardNumber[N];
- Even = Even + getDigit(number);
- }
- N++;
- }
- return Even;
- }
- //----------------------------------------------------------------------------------
- int SumOfOddPlace(const string& cardNumber)
- {
- int Odd = 0;
- int N = 1;
- while (N < cardNumber.length())
- {
- if (N == 1 || N % 2 != 0)
- {
- Odd = Odd + cardNumber[N] - '0';
- }
- N++;
- }
- return Odd;
- }
- //-----------------------------------------------------------------------------------
- int main()
- {
- cout << " Enter a credit card # :";
- string cardNumber;
- getline(cin, cardNumber);
- if (isValid(cardNumber))
- {
- cout << cardNumber << " is a valid number \n";
- }
- else
- {
- cout << cardNumber << " is not a valid number \n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment