ユーザーが ISBN コードを入力し、エントリの正確性をチェックするプログラムを作成しようとしています。ISBN は0201702894
です。チェック ディジット (4) は、次のように他の 9 桁から計算されます – (各桁の合計 (桁数にその位置を掛けた数)) mod 11.Ex: (0*1 + 2*2 + 0*3 + 1*4 + 7*5 + 0*6 + 2*7 + 8*8 + 9*9)%11 = (0+4+0+4+35+0+14+64+81)%11 = 4 (202/11 = 18 remainder 4)
チェック ディジットは、ISBN が間違って入力またはコピーされたときに検出できます。
値を入力するたびに、常に「ISBN が正しくありません」という出力が表示されます。私の論理に何か問題があります。
1. Correct Value: 0201702894
2. Incorrect value: 0201702984
コード:
#include <iostream>
using namespace std;
int totalNumbersCheck=0;
int main()
{
int isbnArray[10]; //array to store the ISBN numbers
int ISBN=0; //inputted ISBN number
//user input
cout<<"Please enter the ISBN number: ";
cin>>ISBN;
//ISBN storage
isbnArray[ISBN];
//ISBN calculation
for(int i=0;i<10;i++)
{
totalNumbersCheck=isbnArray[i]*(i+1);
}
//remove last element from array
totalNumbersCheck-=isbnArray[10];
//check if remainder equals last element and output correct response
if(totalNumbersCheck%11==isbnArray[10])
{
cout<<"\nThe ISBN is correct.";
}
else
cout<<"\nThe ISBN is not correct.";
cin.get();
cin.get();
return 0;
}