Please use C++ langauge and comments are appreciated! [Financial: credit card nu
ID: 3537735 • Letter: P
Question
Please use C++ langauge and comments are appreciated!
Explanation / Answer
#include<sstream>
#include<string>
using namespace std;
bool creditCardType(string cardNumber)
{
return (cardNumber.compare(0, 1, "4") == 0) || // TYPE VISA.
(cardNumber.compare(0, 1, "5") == 0) || // TYPE MASTER.
(cardNumber.compare(0, 2, "37") == 0) || // TYPE AMERICAN EXPRESS
(cardNumber.compare(0, 1, "6") == 0); // TYPE DISCOVER.
}
int getDigit(int number)
{
int result =0;
while(number)
{
result = result + (number%10);
number = number/10;
}
return result;
}
// to calculate sum of numbers at even places.
int sumOfDoubleEvenPlaces(const string& cardNumber)
{
int sum_even_places = 0;
for (int i = cardNumber.length()-2; i>=0; i-=2)
{
sum_even_places = sum_even_places + getDigit(2*(cardNumber[i] - '0'));
}
return sum_even_places;
}
int sumOfOddPlace(const string& cardNumber)
{
int sum_odd_places = 0;
for (int i = cardNumber.length()-1; i>=0; i-=2)
{
sum_odd_places = sum_odd_places +((cardNumber[i] - '0'));
}
return sum_odd_places;
}
// function to check card is valid or not.
bool isValid(const string& cardNumber)
{
return ((sumOfDoubleEvenPlaces(cardNumber)+sumOfOddPlace(cardNumber))%10==0);
}
//Write a program that prompts the user to enter a credit card number as a long integer.
int main()
{
long int cardnNum;
int choice;
cout << "Enter your credit card number ";
cin >>cardnNum;
cout << endl;
stringstream ss;
ss << cardnNum;
string cardnumber = ss.str();
// You program will begin by asking the user what type of execution:
// 1= use asset logic on length of credit card number
// 2= print error message and continue on to next credit card number.
//Display the credit card number, length of credit card number and whether the number is valid or invalid.
cout <<"Enter 1 to use asset logic on length of credit card number" << endl;
cout <<"Enter 2 to use creditCardType logic on credit card number " << endl;
cin >> choice;
cout << endl;
if(choice == 1)
{
cout << cardnumber << " has Type ";
if(cardnumber[0] == '4') cout <<" VISA";
if(cardnumber[0] == '5') cout <<" MASTER";
if(cardnumber[0] == '6') cout <<" DISCOVER";
if(cardnumber[0] == '3') cout <<" AMERICAN EXPRESS";
cout << endl;
if((cardnumber.length()>=13 && cardnumber.length()<=16))
cout << cardnumber << " has length " <<cardnumber.length() <<" Is Valid card " << endl;
else
cout << cardnumber << " has length " <<cardnumber.length() <<" Is InValid card " << endl;
}
else if(choice == 2)
{
if(creditCardType(cardnumber) && isValid(cardnumber))
{
cout << cardnumber << " has Type ";
if(cardnumber[0] == '4') cout <<" VISA";
if(cardnumber[0] == '5') cout <<" MASTER";
if(cardnumber[0] == '6') cout <<" DISCOVER";
if(cardnumber[0] == '3') cout <<" AMERICAN EXPRESS";
cout <<" Is Valid card " << endl;
}
cout << cardnumber << " has Invalid Type.so "<< cardnumber<<" Is InValid card " << endl;
}
system("pause");
return 0;
}