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

โปรแกรม C++ ตรวจสอบหมายเลข ISBN


บทนำ

ISBN (International Standard Book Number) เป็นรหัสหนังสือมาตรฐานระหว่างประเทศ เดิมเป็น 10 หลัก (ก่อน 2007) ปัจจุบันเป็น 13 หลัก บทความนี้ครอบคลุม ISBN 10 หลัก

โครงสร้าง ISBN-10

  • 9 หลักแรก: รหัสชื่อหนังสือ สำนักพิมพ์ และกลุ่ม (ค่า 0-9)
  • หลักที่ 10: ตรวจสอบความถูกต้อง (ค่า 0-9 หรือ X แทน 10)

วิธีตรวจสอบ

  1. คูณหลักที่ 1 ด้วย 10, หลักที่ 2 ด้วย 9, ..., หลักที่ 9 ด้วย 2
  2. หลักที่ 10: ถ้าเป็น X ให้ค่า 10 มิฉะนั้นค่าเป็นตัวเลข
  3. รวมผลคูณทั้งหมด
  4. หารด้วย 11 ถ้าเหลือเศษ 0 → ISBN ถูกต้อง

ตัวอย่างโค้ด C++

#include <bits/stdc++.h>
using namespace std;

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 (value < 0 || value > 9) 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