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しますね。
コメント 0