কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: ISBN নম্বর যাচাই করা

একটি সিকোয়েন্স দেওয়া থাকলে, সেটি ISBN নম্বর কিনা তা চিহ্নিত করতে হবে।

ISBN নম্বর কী?

ISBN মানে International Standard Book Number। ডিসেম্বর ২০০৬ পর্যন্ত এটি ১০ অঙ্কের ছিল এবং ১ জানুয়ারি ২০০৭ থেকে এটি ১৩ অঙ্কের করা হয়েছে। নিচে ১০ অঙ্কের ISBN-এর ইমপ্লিমেন্টেশন দেওয়া হলো।

ISBN ডিজিটের একটি প্যাটার্ন থাকে:

  • শুরুয়ের ৯ অঙ্ক বইয়ের টাইটেল, পাব্লিশার এবং গ্রুপ প্রতিনিধিত্ব করে। প্রথম ৯ অঙ্কের মান ০-৯ এর মধ্যে হতে পারে
  • শেষ ১ অঙ্ক ISBN সঠিক কিনা তা চেক করে। শেষ অঙ্কের মান ১০ হতে পারে এবং এটিকে 'X' চিহ্ন দিয়ে প্রকাশ করা হয়

কিভাবে চেক করবেন যে দেওয়া ১০ অঙ্কের নম্বর ISBN কিনা?

  • সিকোয়েন্সের প্রথম ডিজিট থেকে শুরু করে ১০ দিয়ে গুণ করুন (কারণ ISBN ১০ অঙ্কের)
  • পরবর্তী ডিজিটে যাওয়ার সাথে সাথে গুণক ১ কমিয়ে দিন
  • সব গুণফল যোগ করুন
  • ফলাফলকে ১১ দিয়ে ভাগ করুন
  • ISBN চেক করার শর্ত
    • যদি ফলাফল ১১ দিয়ে বিভাজ্য হয় (অর্থাৎ রিমেইন্ডার ০), তবে নম্বরটি ISBN
    • যদি বিভাজ্য না হয় (রিমেইন্ডার ০ নয়), তবে 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

C++ প্রোগ্রাম উদাহরণ

#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<

আউটপুট

002442142X is invalid
  1. বাইসেকশন মেথড (Bisection Method) C++ প্রোগ্রাম

  2. C++-এ ইনভোলিউটরি ম্যাট্রিক্স যাচাই করার প্রোগ্রাম

  3. C++-এ পিরামিডের ভলিউম বের করার প্রোগ্রাম

  4. C++-এ কুইকসর্ট (QuickSort) প্রোগ্রাম