ニュース
テストでバグ発見!(4)懐かしい「解の公式」のプログラムからバグを探し出せ:山浦恒央の“くみこみ”な話(146)(2/4 ページ)
提示された仕様とプログラム(バグを含む)から、自身の手でテストケースを設計し、バグを実際に見つけ、バグレポートまでを作成する実践的なシリーズ「テストでバグ発見!」。第4回は、多くの読者が中学校の数学で学んであろう、2次方程式の解を求める「解の公式」のプログラムに潜むバグを見つけ出そう。
※本記事はアフィリエイトプログラムによる収益を得ています
3.2 詳細
要求仕様の詳細を下記に示す。
3.2.1 コンソール入力
ユーザーは、プログラム起動時に、コンソール上からa、b、cの整数値(−100〜100)を入力する。また、入力する時は、「aの値を入力してください:」などのメッセージを表示する。
3.2.2 解の算出
a、b、cを入力後、以下の手順で、解を算出し、コンソール上に表示する。なお、コンソール上には、小数以下は切り捨てて表示すること。
(1)判別式からDを求める
判別式を用いて、解が何個あるか判別する。
(2)aが0か判定する
(2-1)a≠0の場合は、以下を実施する
D>0の場合
D>0の場合は、下記の式から、x1とx2を算出する。
算出した結果は、「x1 = ○○」「x2 = ○○」と表示する。
D=0の場合
D=0の場合は、下記の式から1つの解を算出する。
算出した結果は、「x1=○○」と表示する。
D<0の場合
D<0の場合は、「解なし」と出力する。
(2-2)a=0の場合
a=0の場合は、以下を実施する。
b≠0の場合
bが0でない場合は、1次方程式として解を求める。
b=0かつc≠0の場合
「解なし」と出力する。
それ以外の場合
「算出不可」と出力する。
3.3 データ設計
データ設計を以下の表1に示す。
データ | データ型 | 下限/上限 | 入力/出力 | 備考 |
---|---|---|---|---|
a | int | -100〜100 | 入力 | |
b | int | -100〜100 | 入力 | |
c | int | -100〜100 | 入力 | |
x1 | int | N/A | 出力 | 小数以下は切り捨てる |
x2 | int | N/A | 出力 | |
表1 データ設計 |
3.4 使用例
下記にプログラムの実行例を示す。
aの値を入力してください:1 bの値を入力してください:-4 cの値を入力してください:4
リスト1 入力例
x1 = 2
リスト2 出力例
3.5 制限事項
問題の都合上の制限事項を示す。
- テスト入力値は半角数値に限定し、入力値は-100〜100までとする(今回は、エラーケースは考えない)。
- D<0の場合は、虚数を使わず、「解なし」と出力する。
- 出力結果は、説明の都合上、整数値に変換して表示する。
Copyright © ITmedia, Inc. All Rights Reserved.