Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ สำหรับตรวจสอบ ISBN


กำหนดตามลำดับและหน้าที่คือการระบุว่าลำดับที่กำหนดเป็นหมายเลข sa ISBN หรือไม่

หมายเลข ISBN คืออะไร

ISBN ย่อมาจาก International Standard Book Number เป็นตัวเลข 10 หลักจนถึงธันวาคม 2549 และขณะนี้มีการแก้ไขเป็นตัวเลข 13 หลักตั้งแต่วันที่ 1 มกราคม 2550 ด้านล่างนี้คือการใช้ ISBN 10 หลัก

หลัก ISBN มีรูปแบบเป็น -

  • ตัวเลขเริ่มต้น 9 หลักหมายถึงชื่อหนังสือ ผู้จัดพิมพ์ และกลุ่มของหนังสือ ค่าของ 9 หลักแรกสามารถอยู่ในช่วงตั้งแต่ 0 - 9
  • ตัวเลข 1 หลักสุดท้ายตรวจสอบว่า 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