ক্রম সহ দেওয়া হয়েছে এবং কাজ হল প্রদত্ত ক্রমটি আইএসবিএন নম্বরে কিনা তা সনাক্ত করা৷
আইএসবিএন নম্বর কী
আইএসবিএন মানে ইন্টারন্যাশনাল স্ট্যান্ডার্ড বুক নম্বর হল ডিসেম্বর 2006 পর্যন্ত একটি 10 ডিজিটের নম্বর এবং এখন এটি 1 জানুয়ারি 2007 থেকে 13 ডিজিটের সংখ্যায় সংশোধিত হয়েছে৷ নীচে 10 সংখ্যার ISBN বাস্তবায়ন করা হয়েছে৷
ISBN ডিজিটের একটি প্যাটার্ন আছে −
- একটি সংখ্যার 9 সংখ্যার শুরু বইটির শিরোনাম, প্রকাশক এবং গোষ্ঠীর প্রতিনিধিত্ব করে। প্রথম 9 সংখ্যার মান 0 - 9 হতে পারে৷
- আইএসবিএন সঠিক কি না তা শেষ 1 সংখ্যা পরীক্ষা করে। শেষ সংখ্যাটি 10 হিসাবে মান নিতে পারে এবং এই সংখ্যাটি উপস্থাপন করতে 'X' প্রতীক ব্যবহার করা হয়
প্রদত্ত 10 সংখ্যার নম্বরটি একটি ISBN নম্বর কিনা তা কীভাবে পরীক্ষা করবেন?
- একটি অনুক্রমের প্রথম সংখ্যা থেকে শুরু করুন এবং এটিকে 10 দিয়ে গুণ করুন কারণ ISBN হল একটি 10 সংখ্যার সংখ্যা
- গুনকের মান 1 দ্বারা কমিয়ে পরবর্তী অঙ্কে যেতে থাকুন
- সমস্ত গুণিত ফলাফল যোগ করুন
- 11 দিয়ে ফলাফল ভাগ করুন
- আইএসবিএন নম্বর চেক করতে শর্ত প্রয়োগ করুন
- যদি ফলাফল 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