अनुक्रम और कार्य के साथ दिया गया यह पहचानना है कि दिया गया क्रम आईएसबीएन नंबर है या नहीं।
आईएसबीएन नंबर क्या है
आईएसबीएन का मतलब इंटरनेशनल स्टैंडर्ड बुक नंबर है जो दिसंबर 2006 तक 10 अंकों की संख्या है और अब इसे 1 जनवरी 2007 से 13 अंकों की संख्या में संशोधित किया गया है। नीचे दिए गए 10 अंकों के आईएसबीएन का कार्यान्वयन है।
ISBN अंक का पैटर्न −
. के रूप में होता है- किसी संख्या के 9 अंक शुरू करना पुस्तक के शीर्षक, प्रकाशक और समूह का प्रतिनिधित्व करता है। पहले 9 अंकों का मान 0 - 9 के बीच हो सकता है
- अंतिम 1 अंक यह जांचता है कि आईएसबीएन सही है या नहीं। अंतिम अंक 10 के रूप में मान ले सकता है और इस संख्या को दर्शाने के लिए प्रतीक 'X' का उपयोग किया जाता है
कैसे जांचें कि दी गई 10 अंकों की संख्या एक ISBN संख्या है या नहीं?
- किसी क्रम के पहले अंक से शुरू करें और इसे 10 से गुणा करें क्योंकि ISBN एक 10 अंकों की संख्या है
- गुणक के मान को 1 से कम करके अगले अंक की ओर बढ़ते रहें
- सभी गुणा परिणाम जोड़ें
- परिणाम को 11 से विभाजित करें
- आईएसबीएन नंबर की जांच के लिए शर्त लागू करें
- यदि परिणाम 11 से विभाज्य है जिसका अर्थ है कि कोई शेष नहीं है या 0 शेष के रूप में संख्या से एक आईएसबीएन संख्या है
- यदि परिणाम 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