ISBNをチェックするC++プログラム
シーケンスで与えられ、タスクは、与えられたシーケンスがISBN番号であるかどうかを識別することです。
ISBN番号とは
ISBNは、International Standard Book Numberの略で2006年12月までは10桁の番号でしたが、2007年1月1日から13桁の番号に改訂されました。以下に10桁のISBNの実装を示します。
ISBN桁には、次のようなパターンがあります-
- 数字の最初の9桁は、本のタイトル、出版社、グループを表します。最初の9桁の値は、0〜9の範囲です。
- 最後の1桁は、ISBNが正しいかどうかを確認します。最後の桁は10として値を取ることができ、記号「X」はこの数値を表すために使用されます
指定された10桁の数字がISBN番号であるかどうかを確認するにはどうすればよいですか?
- ISBNは10桁の数字であるため、シーケンスの最初の桁から開始し、10を掛けます
- 乗数の値を1減らして、次の桁に移動し続けます
- 乗算されたすべての結果を追加します
- 結果を11で割ります
- 条件を適用してISBN番号を確認します
- 結果が11で割り切れる場合、つまり、余りがないか、余りが数値よりも0である場合はISBN番号です
- 結果が11で割り切れない場合、つまり、数値よりも余りがISBN番号ではないため、余りが残っているか、0ではない場合
例
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
-
C++でのピラミッドのボリュームのプログラム
ピラミッドのベースのタイプに応じて側面が与えられると、タスクはピラミッドの体積を計算することです。 ピラミッドは、ピラミッドの鋭いエッジを形成する共通点で外面が三角形で交わる3D図形です。ピラミッドの体積は、持つベースのタイプによって異なります。 -のように、ピラミッドを構成できるベースにはさまざまな種類があります。 三角形 -ピラミッドの体積よりも、ピラミッドの底辺が三角形になることを意味します 式-:( 1/6)* a * b * h 正方形 -ピラミッドの体積よりも、ピラミッドの底面が正方形になることを意味します 式-:(1/3)*(b ^ 2)* h 五角形 -ピラミッド
-
QuickSort用のC++プログラム?
クイックソートは、比較を使用してソートされていないリスト(配列)をソートするソート手法です。クイックソートは、パーティション交換ソートとも呼ばれます。 等しいソート項目の相対的な順序が保持されないため、安定したソートではありません。クイックソートは配列を操作できるため、ソートを実行するために少量の追加メモリが必要です。常に最悪の場合のパーティションを選択するわけではないことを除いて、選択ソートと非常によく似ています。したがって、選択ソートのより適切な形式と見なすことができます。 QuickSortは、最も効率的な並べ替えアルゴリズムの1つであり、配列を小さい配列に分割することに基づいていま