[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

コンピュータIIIB(Javaアルゴリズム)第12回

目次 索引
12.1 試験について
12.2 成績評価について
12.3 演習12
12.4 レポート課題
12.5 参考文献

12.1 試験について

次回(1月14日)の授業では試験を行います。 今日の演習問題をよく見直しておいてください。


12.2 成績評価について

レポートの提出に関するスケジュールは次の通りです。

1月21日(金)
全員にレポートの提出状況をメールで知らせます。
1月31日(月)
レポートの最終締め切り日です。 これ以降提出されたレポートは採点しません。

この授業の成績は、レポートの提出と試験の得点で決まります。

S
レポートはすべて提出。 レポートの完成度が高い。 試験の得点は「優」相当。
A
レポートはすべて提出。 試験の得点は「優」相当。
B
レポートはおおむね提出。 試験の得点は「良」相当。
C
レポートは未提出が目立つ。 試験の得点は「可」相当。
F
レポートは未提出が多い。 試験の得点は「不可」相当。

成績に関して次のような事情のある人はメールで連絡してください。 できる限り対処します。


12.3 演習12

問 1. 次のプログラムは、星印を 10 行 10 列に並べた正方形を出力する (つもりの)
      ものです。このプログラムの不具合を修正してください。

/*  1*/ class PrintSquare {
/*  2*/     public static void main (String[] args) {
/*  3*/         int i, SIZE = 10;
/*  4*/         for (i = 0; i < SIZE; i++) {
/*  5*/             for (i = 0; i < SIZE; i++) {
/*  6*/                 System.out.print("*");
/*  7*/             }
/*  8*/             System.out.println();
/*  9*/         }
/* 10*/     }
/* 11*/ }

b04a001@AsiaA1:~/comp3b% java PrintSquare
********** // 1 行しかないので間違い
b04a001@AsiaA1:~/comp3b%

問 2. 次のプログラムは、10 進数 100 を 2 進数に変換する (つもりの) ものです。10
      進 2 進変換は、以下のように 2 で割り続け、余りを下から上に読むという方法
      に基づきます。このプログラムの不具合を修正してください。

    100 ÷ 2 = 50 … 0 ↑
     50 ÷ 2 = 25 … 0 ↑
     25 ÷ 2 = 12 … 1 ↑
     12 ÷ 2 =  6 … 0 ↑
      6 ÷ 2 =  3 … 0 ↑
      3 ÷ 2 =  1 … 1 ↑
      1 ÷ 2 =  0 … 1 ↑

/*  1*/ class ToBinary {
/*  2*/     public static void main (String[] args) {
/*  3*/         toBinary(100);
/*  4*/         System.out.println();
/*  5*/     }
/*  6*/     static void toBinary (int n) {
/*  7*/         if (n > 0) {
/*  8*/             System.out.print(n % 2);
/*  9*/             toBinary(n / 2);
/* 10*/         }
/* 11*/     }
/* 12*/ }

b04a001@AsiaA1:~/comp3b% java ToBinary
0010011 // 1100100 でないので間違い
b04a001@AsiaA1:~/comp3b%

問 3. 次のプログラムは、数列 3, 6, 5, 4, 9, 1, 8, 2, 7 を一種のバブルソートで整
      列する (つもりの) ものです。この整列法は、左から右に見ていき、逆順を見つ
      けたらそこを交換してまた左端から見直すというものです。このプログラムの不
      具合を修正してください。

/*  1*/ class BubbleSort {
/*  2*/     public static void main (String[] args) {
/*  3*/         int i = 0, temp;
/*  4*/         int[] a = {3, 6, 5, 4, 9, 1, 8, 2, 7};
/*  5*/         while (i < a.length) {
/*  6*/             if (a[i] > a[i + 1]) {
/*  7*/                 temp = a[i];
/*  8*/                 a[i] = a[i + 1];
/*  9*/                 a[i + 1] = temp;
/* 10*/                 i = 0;
/* 11*/             } else {
/* 12*/                 i++;
/* 13*/             }
/* 14*/         }
/* 15*/         for (i = 0; i < a.length; i++) {
/* 16*/             System.out.print(" " + a[i]);
/* 17*/         }
/* 18*/         System.out.println();
/* 19*/     }
/* 20*/ }

b04a001@AsiaA1:~/comp3b% java BubbleSort
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
        at BubbleSort.main(BubbleSort.java:6)
// 1 2 3 4 5 6 7 8 9 でないので間違い
b04a001@AsiaA1:~/comp3b%

問 4. 次のプログラムは、リスト [1, 2, 3, 4, 5] をコピーする (つもりの) もので
      す。このプログラムの不具合を修正してください。

/*  1*/ class IntList {
/*  2*/     int first;
/*  3*/     IntList rest;
/*  4*/     IntList (int first, IntList rest) {
/*  5*/         this.first = first;
/*  6*/         this.rest = rest;
/*  7*/     }
/*  8*/ }

/*  1*/ class ListCopy {
/*  2*/     public static void main (String[] args) {
/*  3*/         int DUMMY = 0;
/*  4*/         IntList lst1, lst2, head;
/*  5*/         lst1 = new IntList(DUMMY, null);
/*  6*/         lst1.rest = new IntList(1, null);
/*  7*/         lst1.rest.rest = new IntList(2, null);
/*  8*/         lst1.rest.rest.rest = new IntList(3, null);
/*  9*/         lst1.rest.rest.rest.rest = new IntList(4, null);
/* 10*/         lst1.rest.rest.rest.rest.rest = new IntList(5, null);
/* 11*/         lst2 = new IntList(DUMMY, null);
/* 12*/         head = lst2;
/* 13*/         lst1 = lst1.rest;
/* 14*/         while (lst1 != null) {
/* 15*/             lst2 = new IntList(lst1.first, null);
/* 16*/             lst1 = lst1.rest;
/* 17*/             lst2 = lst2.rest;
/* 18*/         }
/* 19*/         lst2 = head;
/* 20*/         for (lst2 = lst2.rest; lst2 != null; lst2 = lst2.rest) {
/* 21*/             System.out.print(" " + lst2.first);
/* 22*/         }
/* 23*/         System.out.println();
/* 24*/     }
/* 25*/ }

b04a001@AsiaA1:~/comp3b% java ListCopy

// 1 2 3 4 5 でないので間違い
b04a001@AsiaA1:~/comp3b%

問 5. 次のプログラムは、以下の二分木の葉をすべて出力する (つもりの) ものです。
      このプログラムの不具合を修正してください。

               1
               |
       +-------+-------+
       |               |
       2               3
       |               |
   +---+---+       +---+
   |       |       |
   4       5       6

/*  1*/ class IntTree {
/*  2*/     int node;
/*  3*/     IntTree left, right;
/*  4*/     IntTree (int node, IntTree left, IntTree right) {
/*  5*/         this.node = node;
/*  6*/         this.left = left;
/*  7*/         this.right = right;
/*  8*/     }
/*  9*/ }

/*  1*/ class PrintLeaves {
/*  2*/     public static void main (String[] args) {
/*  3*/         int DUMMY = 0;
/*  4*/         IntTree tr = new IntTree(DUMMY, null, null);
/*  5*/         tr.right = new IntTree(1, null, null);
/*  6*/         tr.right.left = new IntTree(2, null, null);
/*  7*/         tr.right.right = new IntTree(3, null, null);
/*  8*/         tr.right.left.left = new IntTree(4, null, null);
/*  9*/         tr.right.left.right = new IntTree(5, null, null);
/* 10*/         tr.right.right.left = new IntTree(6, null, null);
/* 11*/         printLeaves(tr.right);
/* 12*/         System.out.println();
/* 13*/     }
/* 14*/     static void printLeaves (IntTree tr) {
/* 15*/         if (tr.left == null) {
/* 16*/             if (tr.right == null) {
/* 17*/                 System.out.print(" " + tr.node);
/* 18*/             } else {
/* 19*/                 printLeaves(tr.right);
/* 20*/             }
/* 21*/         } else {
/* 22*/             printLeaves(tr.left);
/* 23*/         }
/* 24*/     }
/* 25*/ }

b04a001@AsiaA1:~/comp3b% java PrintLeaves
 4 // 4 5 6 でないので間違い
b04a001@AsiaA1:~/comp3b%

12.4 レポート課題

今日の演習12の答案をkonishi@twcu.ac.jpあてにメールで送ってください。 メールには、学生番号、氏名、科目名、授業日(12月17日)を明記してください。


12.5 参考文献


[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

2004年12月17日更新
konishi@twcu.ac.jp
Copyright (C) 2004 Zenjiro Konishi. All rights reserved.