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;
//检查其是否为有效的ISBN-
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