From 4e07118b6394231d4901c8d61f7e4807a211767d Mon Sep 17 00:00:00 2001 From: Bindasscodder <100517651+Bindasscodder@users.noreply.github.com> Date: Mon, 3 Oct 2022 07:56:15 -0700 Subject: [PATCH] Create credit-card-validator.cpp --- C++/credit-card-validator.cpp | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 C++/credit-card-validator.cpp diff --git a/C++/credit-card-validator.cpp b/C++/credit-card-validator.cpp new file mode 100644 index 0000000..9699b73 --- /dev/null +++ b/C++/credit-card-validator.cpp @@ -0,0 +1,58 @@ +#include +#include +#include + +using namespace std; + +bool isNumberString(const string& s) { + int len = s.length(); + for (int i = 0; i < len; i++) { + if (s[i] < '0' || s[i] > '9') + return false; + } + return true; +} + +int main() { + string ccNumber; + + cout << "This program uses the Luhn Algorigthm to validate a CC number." << endl; + cout << "You can enter 'exit' anytime to quit." << endl; + + while (true) { + + cout << "Please enter a CC number to validate: "; + cin >> ccNumber; + + if (ccNumber == "exit") + break; + + else if (!isNumberString(ccNumber)) { + cout << "Bad input! "; + continue; + } + + int len = ccNumber.length(); + int doubleEvenSum = 0; + + for (int i = len - 2; i >= 0; i = i - 2) { + int dbl = ((ccNumber[i] - 48) * 2); + if (dbl > 9) { + dbl = (dbl / 10) + (dbl % 10); + } + doubleEvenSum += dbl; + } + + + for (int i = len - 1; i >= 0; i = i - 2) { + doubleEvenSum += (ccNumber[i] - 48); + } + + + cout << (doubleEvenSum % 10 == 0 ? "Valid!" : "Invalid!") << endl; + + continue; + } + + return 0; +}