C++程式用於檢查ISBN


給定序列,任務是識別給定序列是否為ISBN號碼。

什麼是ISBN號碼?

ISBN代表國際標準書號,在2006年12月之前是10位數字,從2007年1月1日起改為13位數字。以下是10位ISBN的實現。

ISBN數字具有一定的模式:

  • 前9位數字代表書籍的標題、出版商和組別。前9位數字的值範圍為0-9。
  • 最後一位數字用於檢查ISBN是否正確。最後一位數字可以取值為10,並使用符號“X”表示該數字。

如何檢查給定的10位數字是否為ISBN號碼?

  • 從序列的第一位數字開始,將其乘以10(因為ISBN是10位數字)。
  • 繼續移動到下一位數字,並將乘數減1。
  • 將所有相乘的結果相加。
  • 將結果除以11。
  • 應用條件來檢查ISBN號碼。
    • 如果結果可以被11整除,這意味著餘數為0,則該數字為ISBN號碼。
    • 如果結果不能被11整除,這意味著餘數不為0,則該數字不是ISBN號碼。

示例

Input-: 002442142X
Output-: Not ISBN
Input-: 007462542X
Output-: it’s ISBN

演算法

Start
Step 1-> declare function to check for ISBN
   bool isvalid(string &isbn_number)
      set int n = isbn_number.length()
         IF (n != 10)
            return false
         End
         Set int sum = 0
         Loop For int i = 0 and i < 9 and i++
            Set int value = isbn_number[i] - '0'
            If (0 > value || 9 < value)
               return false
            End
            Set sum += (value * (10 - i))
         End
         Set char last_val = isbn_number[9]
         IF (last_val != 'X' && (last_val < '0' || last_val > '9'))
            return false
         End
         Set sum += ((last_val == 'X') ? 10 : (last_val - '0'))
         return (sum % 11 == 0)
step 2-> In main()
   set string isbn_number = "002442142X"
   IF (isvalid(isbn_number))
      Print " is Valid"
   End
   Else
      Print " is invalid
   End
Stop

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
//check whether its a valid ISBN or not
bool isvalid(string &isbn_number) {
   int n = isbn_number.length();
   if (n != 10)
      return false;
   int sum = 0;
   for (int i = 0; i < 9; i++) {
      int value = isbn_number[i] - '0';
      if (0 > value || 9 < value)
         return false;
      sum += (value * (10 - i));
   }
   char last_val = isbn_number[9];
   if (last_val != 'X' && (last_val < '0' || last_val > '9'))
      return false;
   sum += ((last_val == 'X') ? 10 : (last_val - '0'));
   return (sum % 11 == 0);
}
int main() {
   string isbn_number = "002442142X";
   if (isvalid(isbn_number))
      cout<<isbn_number<<" is Valid";
   else
      cout<<isbn_number<<" is invalid";
   return 0;
}

輸出

如果執行上述程式碼,將生成以下輸出:

002442142X is invalid

更新於:2019年10月18日

1K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.