SSブログ

Java:配列の課題(演習問題) [勉強]

さてさて・・・教科書に載っている配列の練習問題の後は、講師から出された配列の演習問題です。
どんな問題かというと・・・・・・

問題9-1:(class ArrayTest)
「要素数8の配列を作成し、文字’A’~’H’を順に格納し、配列の要素数と配列の要素を全て表示するプログラムを作成せよ」

問題9-2:(class InputArray)
「コマンドライン引数から複数の数値を入力したとき、最小値、最大値の値を表示せよ」

問題9-3:(class ArraySort)
「要素数100の配列を作成し、1~1000の整数値をランダムに格納し(重複する値があってもOK)、配列の要素を全て表示し、配列の内容を昇順にソートして表示するプログラムを作成せよ」

問題9-4:(class ArraySortDesc)
「問題9-3を降順ソートするプログラムに改良せよ」

問題9-5:(class Statistics)
「0~100の整数をランダムに200件、発生させ、下記を行うプログラムを作成せよ」
 (1) 全ての値を出力
 (2) 平均を出力
 (3) 標準偏差を出力
 (4) メジアン(中央値)を出力
 (5) モード(最頻値)を出力

・・・標準偏差?? 中央値?? 最頻値??
(=ΦωΦ=)ニャー (=ΦωΦ=)ニャー ・・・・・・ネコになっちゃうくらいワケがわかりませんな。
「英語も数学もまるでダメ」というBOΦWYのImageDownの歌詞みたいな私が、この問題9-5を解けるのか・・・。(^-^;

 

 

とりあえず・・・
問題9-1の回答ソースです。

public class ArrayTest {
 public static void main(String[] args) {
  char c[];
  c = new char[] { 'A','B','C','D','E','F','G','H' };
  for (int i= 0; i < c.length; i++) {
   System.out.println("配列"+ i + " = " + c[i]);
  }
 }
}

こんな感じですよね。
で、問題9-2の回答ソースです。

public class InputArray {
 public static void main(String[] args) {
  int min =1;
  int max =0;
  int[] kazu = new int[args.length];
  
  for (int i = 0; i < args.length; i++) {
   kazu[i] = Integer.parseInt(args[i]);
   if (kazu[i] < min) {
    min = kazu[i];
   } else if (kazu[i] > max) {
    max = kazu[i];
   }
  }
  System.out.println("最小値= " + min);
  System.out.println("最大値= " + max);
 }
}

コマンドライン引数の数だけ配列を作成して、そこへコマンドライン引数の値を入れて・・・ってコメントなくても なんとなく分かります?
では、問題9-3の回答ソートじゃないや、ソースです。(^-^;

ublic class ArraySort { 
 public static void main(String[] args) {
  int[] num;
  int length = 100;
  num = new int[length];
  //乱数1~1000を生成し、配列へ代入
  for (int i = 0; i < length; i++) {
   num[i] = (int)(1000.0 * Math.random());
  }

  for (int i = 0; i < length-1; i++) {
   for (int j = i + 1; j < length; j++) {
    if (num[i] > num[j]) {  //前の数値が後の数値より大きい場合
     int tmp =num[i];  //昇順ソート
     num[i] = num[j];
     num[j] = tmp;
    }
   }
  }

  for (int i = 0; i < length; i++) {
   System.out.print(num[i] + " ");
   if (i % 10 == 0) {
    System.out.println();
   }
  }
  System.out.println("\nend");
 }
}

最後の方で、ちょっと余計なことというか、10個数字が表示されたら改行するようにしました。だって、コマンドプロンプトで数字が100個もズラァーーって並んだら、見づらいでしょ??
で、次は問題9-4で、降順ソートのソースですね。上記ソースをちょっといじっただけです。

public class ArraySortDesc { 
 public static void main(String[] args) {
  int[] num;
  int length = 100;
  num = new int[length];
  //乱数1~1000を生成し、配列へ代入
  for (int i=0; i<length; i++) {
   num[i] = (int)(1000.0 * Math.random());
  }

  for (int i=0; i<length-1; i++) {
   for (int j=i+1; j<length; j++) {
    if (num[i] < num[j]) {  //前の数値が後の数値より大きい場合
     int tmp =num[i];  //降順ソート
     num[i] = num[j];
     num[j] = tmp;
    }
   }
  }

  for (int i=0; i<length; i++) {
   System.out.print(num[i] + " ");
   if (i%10 == 0) {
    System.out.println();
   }
  }
  System.out.println("\nend");
 }
}

さてさて・・・例の問題9-5ですけどね。
次のブログ記事にUPします。これ大変だったんですから。って、多分まだ完成じゃないかも・・・だけど、一応思った通りの動きをしてくれるようになったから、UPしますね。

 


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:資格・学び

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。