1. 10個の要素を持つ配列a、bがある。 配列aの各要素をすべて配列bにコピーする。 2. 配列aの各要素を逆に配列bにコピーする。 a[0]→b[9]、a[1]→b[8]、・・・ a[9]→b[0] 3. 配列aの各要素を1つずらして、配列bにコピーする。 a[0]→b[1]、a[1]→b[2]、・・・ a[8]→b[9]、a[9]→b[0] 4. 配列aの各要素を逆にする。[オプション] a[0]⇔a[9]、a[1]⇔a[8]、・・・a[4]⇔a[5] 5. 配列aの各要素を1つずつずらす。[オプション] a[0]→a[1]→a[2]・・・ →a[9]→a[0] 6.配列DAYSには、つぎの初期値が順番に入っている。 int[] DAYS = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; これを使い、Quiz0705.java 「月(1~12)monthを入力して、その月の日数を表示する」 を改良する。 7. (線形探索) 要素数10のint型配列aにデータが入っている。 コマンドライン引数で、整数値を指定して、 その数値が配列要素にあるかどうか、 あれば、そのときの添字を表示する。 (参考:午前中のテキストp.58の線形探索) 8. (二分探索) 要素数10のint型配列aにデータが入っている。 このとき、要素の値は昇順に入っている。 コマンドライン引数で、整数値を指定して、 その数値が配列要素にあるかどうか、あれば、 そのときの添字を表示する。 (参考:午前中のテキストp.59の二分探索) 9. (基本交換法) 要素数10のint型配列aにデータが入っている。 この配列要素を昇順に並べ替える。 (参考:午前中のテキストp.62の基本交換法を使う) 10. (基本選択法) 要素数10のint型配列aにデータが入っている。 この配列要素を昇順に並べ替える。 (参考:午前中のテキストp.63の基本選択法を使う) 11. (基本挿入法) 要素数10のint型配列aにデータが入っている。 この配列要素を昇順に並べ替える。 (参考:午前中のテキストp.63の基本挿入法を使う) 12. (文字列探索 - 力まかせ探索法) char型配列textにデータが入っている。 この文字配列textの中に、パターン文字列 (char型配列pattern)を探索する。あった場 合は、patternの先頭文字と一致するtextの 添字を返す。ない場合は、-1を返す。 (参考:午前中のテキストp.66の力まかせ探索法を使う) (参考)Stringからchar配列を定義する例 String textString = "PQACZXYZRXYZ"; char[] text = textString.toCharArray(); 13. (文字列探索 - BM法) char型配列textにデータが入っている。 この文字配列textの中に、パターン文字列 (char型配列pattern)を探索する。あった場 合は、patternの先頭文字と一致するtextの 添字を返す。ない場合は、-1を返す。 (参考:午前中のテキストp.67のBM法を使う) (2次元配列) 21. Quiz0904で、じゃんけんの勝敗表(2次 元配列)をつくり、勝負するロジックを簡単 にする。 また、指定した手も、数字ではなく、日本語 表記(グー、チョキ、パー)で表示すること。 --------- ------- -------- -------- 勝敗表 0 グー 1 チョキ 2 パー --------- ------- -------- -------- 0 グー 引分け 勝ち 負け 1 チョキ 負け 引分け 勝ち 2 パー 勝ち 負け 引分け --------- ------- -------- -------- 22.金額を入力して、1000円でお釣りをもら う。お釣りの硬貨は最低枚数とする。 6×2の配列coinsの、2列目に、それぞれのお 釣りの枚数を入れるアルゴリズムを作る。 1列目には硬貨の種類があらかじめ入ってい るものとする。 ------- ---------- 硬貨 お釣り枚数 ------- ---------- [0] 1 [1] 5 [2] 10 [3] 50 [4] 100 [5] 500 ------- ---------- 23.重さに対する料金を出す。 6×2の配列の、1列目に重さ、2列目に料金が 入っている。 なお、重さは、下の表では以下をあらわす。 たとえば、200gに対しては、190円になる。 2000gより重い場合は、一律に2000円とする ------- ---- 重さ 料金 ------- ---- [0] 100 100 [1] 200 190 [2] 400 370 [3] 600 550 [4] 1000 900 [5] 2000 1700 ------- ---- -------------------------------------------------- /** * 10個の要素を持つ配列a、bがある。 * 配列aの各要素をすべて配列bにコピーする。 */ public class Quiz1601 { public static void main(String[] args) { int[] a = {5, 3, 7, 9, 0, 1, 2, 8, 4, 6, }; int[] b = new int[a.length]; // 表示する。 System.out.print("a = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // コピーする。 for (int i = 0; i b[i] = a[i]; } // 表示する。 System.out.print("b = ["); for (int i = 0; i System.out.print(b[i] + ", "); } System.out.println("]"); } } -------------------------------------------------- /** * 配列aの各要素を逆に配列bにコピーする。 * a[0]→b[9]、a[1]→b[8]、・・・ a[9]→b[0] */ public class Quiz1602 { public static void main(String[] args) { int[] a = {5, 3, 7, 9, 0, 1, 2, 8, 4, 6, }; int[] b = new int[a.length]; // 表示する。 System.out.print("a = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // 逆順にコピーする。 for (int i = 0; i b[a.length - i - 1] = a[i]; } // 表示する。 System.out.print("b = ["); for (int i = 0; i System.out.print(b[i] + ", "); } System.out.println("]"); } } -------------------------------------------------- /** * 配列aの各要素を1つずらして、配列bにコピーする。 * a[0]→b[1]、a[1]→b[2]、・・・ a[8]→b[9]、a[9]→b[0] */ public class Quiz1603 { public static void main(String[] args) { int[] a = {5, 3, 7, 9, 0, 1, 2, 8, 4, 6, }; int[] b = new int[a.length]; // 表示する。 System.out.print("a = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // ずらしてコピーする。 for (int i = 0; i b[(i + 1) % b.length] = a[i]; } // 表示する。 System.out.print("b = ["); for (int i = 0; i System.out.print(b[i] + ", "); } System.out.println("]"); } } -------------------------------------------------- /** * 配列aの各要素を逆にする。(オプション) * a[0]⇔a[9]、a[1]⇔a[8]、・・・a[4]⇔a[5] */ public class Quiz1604 { public static void main(String[] args) { int[] a = {5, 3, 7, 9, 0, 1, 2, 8, 4, 6, }; // 表示する。 System.out.print("before = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); // 逆にする。 for (int i = 0; i int w = a[i]; a[i] = a[a.length - i - 1]; a[a.length - i - 1] = w; } // 表示する。 System.out.print(" after = ["); for (int i = 0; i System.out.print(a[i] + ", "); } System.out.println("]"); } } -------------------------------------------------- /** * 配列aの各要素を1つずつずらす。(オプション) * a[0]→a[1]→a[2]・・・ →a[9]→a[0] */ public class Quiz1605 { public static void main(String[] args) { int[] a = {5, 3, 7, 9, 0, 1, 2, 8, 4, 6, }; // 表示する。 System.out.print("before = ["); for (int i = 0; i System.out.printf("%d, ", a[i]); } System.out.println("]"); // ずらす。 int w = a[a.length - 1]; for (int i = a.length - 1; i > 0; i--) { a[i] = a[i - 1]; } a[0] = w; // 表示する。 System.out.print(" after = ["); for (int i = 0; i System.out.printf("%d, ", a[i]); } System.out.println("]"); } } -------------------------------------------------- /** * 月(1~12)を指定して、その月の日数を表示する */ public class Quiz1606 { public static void main(String[] args) { int month = 6; // 月 int[] DAYS = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 結果を表示する System.out.println(month + " 月は " + DAYS[month - 1] + " 日です。"); } } /* 実行結果 6 月は 30 日です。 */ -------------------------------------------------- /** * 7. (線形探索) * 要素数10のint型配列aにデータが入っている。 * コマンドライン引数で、整数値を指定して、その数値が配列要素にあるかどうか、 * あれば、そのときの添字を表示する。 * (参考:午前中のテキストp.58の線形探索) */ public class Quiz1607 { public static void main(String[] args) { int key = Integer.parseInt(args[0]); int[] a = {50, 30, 90, 40, 100, 10, 20, 60, 80, 70, }; // 探索する int index = -1; for (int i = 0; i if (a[i] == key) { index = i; break; } } // 結果を表示する if (index >= 0) { System.out.println(key + " はありました。(index = " + index + ")"); } else { System.out.println(key + " はありませんでした。"); } } } /* 実行結果 >java Quiz1607 10 10 はありました。(index = 5) >java Quiz1607 50 50 はありました。(index = 0) >java Quiz1607 70 70 はありました。(index = 9) >java Quiz1607 55 55 はありませんでした。 */ -------------------------------------------------- /** * 7. (二分探索) * 要素数10のint型配列aにデータが入っている。このとき、要素の値は昇順に入っている。 * コマンドライン引数で、整数値を指定して、その数値が配列要素にあるかどうか、 * あれば、そのときの添字を表示する。 * (参考:午前中のテキストp.58の二分探索) */ public class Quiz1608 { public static void main(String[] args) { int key = Integer.parseInt(args[0]); int[] a = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, }; // 探索する int index = -1; int lowerIndex = 0; int upperIndex = a.length - 1; int middleIndex; while (lowerIndex <= upperIndex) {
middleIndex = (lowerIndex + upperIndex) / 2; if (a[middleIndex] <key) {
key) { upperIndex = middleIndex - 1; } else { index = middleIndex; break; } } // 結果を表示する if (index >= 0) { System.out.println(key + " はありました。(index = " + index + ")"); } else { System.out.println(key + " はありませんでした。"); } } } /* 実行結果 >java Quiz1608 10 10 はありました。(index = 0) >java Quiz1608 50 50 はありました。(index = 4) >java Quiz1608 100 100 はありました。(index = 9) >java Quiz1608 55 55 はありませんでした。 */ --------------------------------------------------
最新の画像[もっと見る]
- あけましておめでとうございます 11年前
- 今年もよろしくお願いいたします 12年前
- あけましておめでとうございます 13年前
- あけましておめでとうございます 16年前
※コメント投稿者のブログIDはブログ作成者のみに通知されます