내 프로그램에서 사용자에게 신용 카드 번호를 입력 한 다음 해당 번호가 유효한지 유효하지 않은지 여부를 표시하고 유효한 경우 카드 유형을 표시하도록되어 있습니다. 카드 종류가 비자, 마스터 카드, 아메리칸 익스프레스인지 발견 (비자 4 건, 마스터 카드 5 건, 아메리칸 익스프레스 37 건, 북미 카드 6 건)인지 알아보기 위해 cardNumber 문자열의 처음 2자를 읽는 데 문제가 있습니다. 디스) 문제의문자열에서 문자를 읽는 데 도움이 필요합니다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string cardNumber; //this will carry the number given by the user.
int sum(0), sumOfDoubleEven(0), sumOfOdd(0), evenDigit(0), oddDigit(0);
cout << "This program is the Credit Card Number Validator." << endl;
cout << "This program will check the validity status of your card number" << endl;
//Main loop
do
{
cout << endl << "Please provide a number to validate or type 'n' to quit ";
cin >> cardNumber; //gets cardNumber from user
if(cardNumber.length()>=13 && cardNumber.length()>=16)
{
if (cardNumber == "n") break; //exits loop on user request
//this for loop repeats once for each digit of the cardNumber.
//digitPosition decrements by one on each pass from last position to first position
for (int digitPosition=cardNumber.length(); digitPosition>0; digitPosition--)
{
if (digitPosition%2 == 0)
{ //executes the following code if digitPosition is even
oddDigit=(int)cardNumber[digitPosition-1]-'0';
sumOfOdd=sumOfOdd+oddDigit;
} else { //executes the following code if digitPosition is odd.
evenDigit=((int)cardNumber[digitPosition-1]-'0')*2;
evenDigit=evenDigit%10+evenDigit/10;
sumOfDoubleEven=sumOfDoubleEven + evenDigit;
}
}
sum=sumOfOdd+sumOfDoubleEven; //sums the result
cout << endl <<"The number "<<cardNumber<<" you provided is ";
if (sum%10==0) //executes if sum is divisible by 10
cout << "valid" << endl;
else //executes if sum is not divisible by 10
cout << "invalid" << endl;
if(cardNumber.at(0)==4) {
cout<<"Your Card type is VISA"<<endl;
} else {
cout<<"Sorry, you've entered a card number not in the range of 13-16 digits" <<endl;
}
}
}while (cardNumber != "n");
return 0;
}
프로 팁 : 당신은 당신이 그것을 제대로 포맷하면보다 쉽게 코드를 디버깅을 찾을 수 있습니다 . –
'cardNumber.length()> = 13 && cardNumber.length()> = 16' 조건에 관해서. 길이가 16보다 크거나 같으면 가장 명확하게 13보다 크거나 같습니다. –
좋아요, 당신의 접근 방식에서 분명히해야 할 개념이 많이 있습니다. C++을 사용한다면이 코드를 작성하는 더 좋은 방법이 있습니다. –