課題0501
コンソールに三角形の3辺a,b,cの長さをそれぞれ入力させ、その三角形が二等辺三角形、正三角形、それ以外の三角形のうちいずれに属するかを表示するプログラム TriangleCheck.java をパッケージ j1.lesson05 に作成しなさい。
コンソールへの入力要求は次のように表示する。
- 辺aの長さ
- この直後に辺aの長さを入力させる
辺aの長さを入力:
- 辺bの長さ
- この直後に辺bの長さを入力させる
辺bの長さを入力:
- 辺cの長さ
- この直後に辺cの長さを入力させる
辺cの長さを入力:
必ず、辺a,b,cの順に入力させ、それぞれの辺の長さは整数を指定できること。今回は辺a,b,cから三角形を作れない場合は考慮しなくても良い (そのようなテストは行わない)。
結果の表示方法は次の通りとする。
- 正三角形、二等辺三角形のいずれでもない場合
入力された三角形は通常の三角形
- 二等辺三角形であった場合
入力された三角形は二等辺三角形
- 正三角形であった場合
入力された三角形は正三角形
結果の例
仮に、入力に3, 5, 5を順番に指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
辺aの長さを入力:3 辺bの長さを入力:5 辺cの長さを入力:5 入力された三角形は二等辺三角形
手順
指定した箇所で必ずテストを行うこと。
- パッケージ j1.lesson05 にクラス TriangleCheck を作成 (ファイル名は TriangleCheck.javaとなる)
- クラス TriangleCheck 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- テスト項目「TriangleCheck に対する骨格テスト」をパス
- mainメソッド内に課題の内容を実装
- テスト項目「TriangleCheck に対する機能テスト」をパス
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
クラスが存在しません | j1.lesson05 に TriangleCheck クラスが存在していない。パッケージやクラス名を確認 |
クラスがpublicで宣言されていません | class の前に public の指定がない。 |
mainメソッドが存在しません | public static void main(String[]) が存在していない。mainという名前やString[]の部分を確認 |
mainメソッドがpublicで宣言されていません | mainメソッドを作る際に public が抜けている。 |
mainメソッドがstaticで宣言されていません | mainメソッドを作る際に static が抜けている。 |
mainメソッドがvoidで宣言されていません | mainメソッドを作る際に void 以外を指定している。 |
mainメソッドにthrows IOExceptionの指定がありません | mainメソッドを作る際にthrows IOExceptionの指定を行っていない。 |
機能テスト
メッセージ | 詳細 |
---|---|
余計な入力を待っていると考えられます | コンソール入力を取得する命令を4回以上行っていないか確認 |
次の入力を変換できませんでした (???) | ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認 |
期待された結果と異なります | 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す |
テスト項目一覧
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
テスト項目名 | テスト内容 |
---|---|
test111 | 入力が順に1,1,1 |
test112 | 入力が順に1,1,2 |
test121 | 入力が順に1,2,1 |
test211 | 入力が順に2,1,1 |
test221 | 入力が順に2,2,1 |
test212 | 入力が順に2,1,2 |
test122 | 入力が順に1,2,2 |
test123 | 入力が順に1,2,3 |
test231 | 入力が順に2,3,1 |
test312 | 入力が順に3,1,2 |
課題0502
コンソールから0以上100以下の整数を繰り返し入力させ、その範囲外の値が入力された際に繰り返しを終了し、そこまでに入力された0以上100以下の値の平均値を表示するプログラム ScoreAverage.java をパッケージ j1.lesson05 に作成しなさい。
0以上100以下の整数を入力させる、コンソールへの入力要求は次のように表示する。この入力要求は入力のたびに表示させる。
値を入力してください:
0以上100以下の値以外が入力されたら繰り返しを終了し、最後に以下のように結果を表示させる。
平均は x
ただし、xの部分にはそこまでに入力された0以上100以下の値の平均値を出力すること。
ここの値は整数でも実数でもかまわない。整数の場合は小数点以下を切り捨てること。
このとき、0以上100以下の整数が一度も入力されなかった場合は以下のように出力する。
入力はありません
結果の例
入力にそれぞれ85, 100, 76, -1を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
値を入力してください:85 値を入力してください:100 値を入力してください:76 値を入力してください:-1 平均は87
入力の最初に-1を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
値を入力してください:-1 入力はありません
手順
指定した箇所で必ずテストを行うこと。
- パッケージ j1.lesson05 にクラス ScoreAverage を作成 (ファイル名は ScoreAverage.javaとなる)
- クラス ScoreAverage 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- テスト項目「ScoreAverage に対する骨格テスト」をパス
- mainメソッド内に課題の内容を実装
- テスト項目「ScoreAverage に対する機能テスト」をパス
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
クラスが存在しません | j1.lesson05 に ScoreAverage クラスが存在していない。パッケージやクラス名を確認 |
クラスがpublicで宣言されていません | class の前に public の指定がない。 |
mainメソッドが存在しません | public static void main(String[]) が存在していない。mainという名前やString[]の部分を確認 |
mainメソッドがpublicで宣言されていません | mainメソッドを作る際に public が抜けている。 |
mainメソッドがstaticで宣言されていません | mainメソッドを作る際に static が抜けている。 |
mainメソッドがvoidで宣言されていません | mainメソッドを作る際に void 以外を指定している。 |
mainメソッドにthrows IOExceptionの指定がありません | mainメソッドを作る際にthrows IOExceptionの指定を行っていない。 |
機能テスト
メッセージ | 詳細 |
---|---|
余計な入力を待っていると考えられます | コンソール入力を取得する命令を4回以上行っていないか確認 |
次の入力を変換できませんでした (???) | ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認 |
期待された結果と異なります | 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す |
無限ループの可能性 | 一定時間内にプログラムが終了しなかった。ループが無限に続いていないか確認 |
テスト項目一覧
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
テスト項目名 | テスト内容 |
---|---|
testLower | 入力が順に0, -1 |
testUpper | 入力が100, -1 |
testLowerOver | 入力が -1 |
testUpperOver | 入力が 101 |
testSenarioShort | 入力が順に 1, 10, 2, -1 |
testSenarioLong | 入力が順に 10, 21, 32, 43, 54, -1 |
課題0503 (optional)
コンソールに1以上9以下の整数を入力させ、入力された値の段の九九を表示するプログラム MultRow.java をパッケージ j1.lesson05 に作成しなさい。
コンソールへの入力要求は次のように表示する。
1以上9以下の整数を入力してください:
結果の出力方法は、全ての出力の値を2桁にそろえるために、出力の値が1~9の場合は01~09と表示すること。
また、一つ一つの出力の値はスペースで区切ること。
つまり、2の段が指定された場合は以下のように出力する。
02 04 06 08 10 12 14 16 18
また、コンソールに1以上9以下でない数値が入力された場合には、以下のように表示すること。
1以上9以下の整数を入力してください
結果の例
仮に、入力に3を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
1以上9以下の整数を入力してください:3 03 06 09 12 15 18 21 24 27
手順
指定した箇所で必ずテストを行うこと。
- パッケージ j1.lesson05 にクラス MultRow を作成 (ファイル名は MultRow.java となる)
- クラス Dichotomy 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- テスト項目「MultRow に対する骨格テスト」をパス
- mainメソッド内に課題の内容を実装
- テスト項目「MultRow に対する機能テスト」をパス
ヒント
九九なので、繰り返す回数が 9 回と暗黙のうちに指定されている。
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
クラスが存在しません | j1.lesson05 に MultRow クラスが存在していない。パッケージやクラス名を確認 |
クラスがpublicで宣言されていません | class の前に public の指定がない。 |
mainメソッドが存在しません | public static void main(String[]) が存在していない。mainという名前やString[]の部分を確認 |
mainメソッドがpublicで宣言されていません | mainメソッドを作る際に public が抜けている。 |
mainメソッドがstaticで宣言されていません | mainメソッドを作る際に static が抜けている。 |
mainメソッドがvoidで宣言されていません | mainメソッドを作る際に void 以外を指定している。 |
mainメソッドにthrows IOExceptionの指定がありません | mainメソッドを作る際にthrows IOExceptionの指定を行っていない。 |
機能テスト
メッセージ | 詳細 |
---|---|
余計な入力を待っていると考えられます | コンソール入力を取得する命令を2回以上行っていないか確認 |
次の入力を変換できませんでした (???) | ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認 |
期待された結果と異なります | 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す |
テスト項目一覧
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
テスト項目名 | テスト内容 |
---|---|
testM5 | 入力が-5 |
testM1 | 入力が-1 |
test0 | 入力が0 |
test1 | 入力が1 |
test2 | 入力が2 |
test3 | 入力が3 |
test4 | 入力が4 |
test5 | 入力が5 |
test6 | 入力が6 |
test7 | 入力が7 |
test8 | 入力が8 |
test9 | 入力が9 |
test10 | 入力が10 |
test15 | 入力が15 |
課題0504 (optional)
コンソールに実数を一つ入力させ、その値の平方根の近似値を二分法を用いて計算するプログラム Dichotomy.java をパッケージ j1.lesson05 に作成しなさい。
ある関数 f(x) について、区間 [a,b] で f(x)=0 となる x がひとつだけ存在することが分かっている場合、
二分法を用いて解の近似値を求めることができる。
コンソールに入力された値を n とし、その平方根を x と置くと、次の式が求まる。
0 <= n < 1 である場合 f(x) = 0 となる x の値は、[0,1]の間に一つだけ存在し、
1 <= n である場合 f(x) = 0 となる x の値は、[0,n]の間に一つだけ存在するので、
以下のような手順でこのxの近似値を計算できる
- a = 0, b = n とおく (n < 1 のときは b = 1 とおく)
- c = (a + b) / 2 とおく
- 次の条件を判定
- f(c) < 0 であれば a = c とする
- f(c) == 0 であれば 解は c
- f(c) > 0 であれば b = c とする
- b - a が十分に小さくなったら終了、そのとき 解の近似値は c
- 十分に小さくなるまで、現在のa,bを用いて 2 へ戻る
本課題では、b - a < 0.0001 となるまで収斂を繰り返すこと。
コンソールへの入力要求は次のように表示する。
正の値を入力:
入力された値に対してその平方根の近似を計算し、以下のように表示する。
結果は x
ただし、x の部分には絶対誤差が0.0001未満の入力された値に対する平方根を出力すること。
また、コンソールへ0未満の値が入力された場合、以下のように表示してプログラムを終了させる。
正の値を入力してください
結果の例
入力に2.25を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
正の値を入力:2.25
結果は1.4999771118164062
手順
指定した箇所で必ずテストを行うこと。
- パッケージ j1.lesson05 にクラス Dichotomy を作成 (ファイル名は Dichotomy.java となる)
- クラス Dichotomy 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- テスト項目「Dichotomy に対する骨格テスト」をパス
- mainメソッド内に課題の内容を実装
- テスト項目「Dichotomy に対する機能テスト」をパス
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
クラスが存在しません | j1.lesson05 に Dichotomy クラスが存在していない。パッケージやクラス名を確認 |
クラスがpublicで宣言されていません | class の前に public の指定がない。 |
mainメソッドが存在しません | public static void main(String[]) が存在していない。mainという名前やString[]の部分を確認 |
mainメソッドがpublicで宣言されていません | mainメソッドを作る際に public が抜けている。 |
mainメソッドがstaticで宣言されていません | mainメソッドを作る際に static が抜けている。 |
mainメソッドがvoidで宣言されていません | mainメソッドを作る際に void 以外を指定している。 |
mainメソッドにthrows IOExceptionの指定がありません | mainメソッドを作る際にthrows IOExceptionの指定を行っていない。 |
機能テスト
メッセージ | 詳細 |
---|---|
余計な入力を待っていると考えられます | コンソール入力を取得する命令を2回以上行っていないか確認 |
次の入力を変換できませんでした (???) | ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認 |
期待された結果と異なります | 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す |
無限ループの可能性 | 一定時間内にプログラムが終了しなかった。ループが無限に続いていないか確認 |
テスト項目一覧
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
テスト項目名 | テスト内容 |
---|---|
testM5 | 入力が-5 |
testM1 | 入力が-1 |
testMini | 入力が0.0000001 |
test1 | 入力が1 |
test2 | 入力が2 |
test3 | 入力が3 |
test10 | 入力が10 |
test255 | 入力が255 |