練習問題4-4-1
// 1次元配列で成績を管理(大変!)
let tanakaScores = [85, 90, 78]; // 田中さんの成績
let satoScores = [92, 88, 95]; // 佐藤さんの成績
let suzukiScores = [76, 85, 82]; // 鈴木さんの成績1次元配列で成績を管理する場合、どのような問題があるか考えてみましょう。上記のコードを見て、3つの問題点を挙げなさい。
問題点
・この場合は人が増えるほど、変数を用意しなければなりません。
・たくさんの別の配列があるため、どれがどれを現しているかわかりずらい。
二つしかわかりませんでした。
ですが、少し読んでいくと、問題点の解決のように書かれている場所があり、そこから推測すると、
・forなどでの使用が難しい。
と、いうふうな回答が正しいのでしょうか?
練習問題4-4-3
例題4-4-2を参考に、次の値を表示するプログラムを作りなさい。
- 田中さん(0行目)の国語(0列目)の点数
- 佐藤さん(1行目)の数学(1列目)の点数
- 鈴木さん(2行目)の英語(2列目)の点数
function setup() {
let scores = [
[85, 90, 78],
[92, 88, 95],
[76, 85, 82]
];
print("田中さんの国語の点数:"+scores[0][0]);
print("佐藤さんの数学の点数:"+scores[1][1]);
print("鈴木さんの英語の点数:"+scores[2][2]);
}
練習問題4-4-5
例題4-4-4では、数字だけが表示されて分かりづらい表になりました。表題(科目名)と名前を追加して、見やすい表にしてみましょう。
以下の雛形に、表題と名前を表示するコードを追加しなさい。
function setup() {
// 成績データ:3人×3科目
let scores = [
[85, 90, 78], // 0行目: 田中さんの国語、数学、英語
[92, 88, 95], // 1行目: 佐藤さんの国語、数学、英語
[76, 85, 82] // 2行目: 鈴木さんの国語、数学、英語
];
let names = ["田中", "佐藤", "鈴木"];
let subjects = ["国語", "数学", "英語"];
for(let i=0; i<scores.length; i++){
for(let j=0; j<scores.length[i]; j++){
print(names[i]+"さんの"+subjects[j]+"の点数"+scores[i][j])
}
}
}
私が真っ先に思い付いたのは、この書き方でした。
ですが、これでは指定されている答えとは異なる形になってしまいます。
ここで私が、つまずいていたのは、printには後から数字を追加できないものであると私は認識しています。その場合一つのprintの中に、数字が同時にが三つ入らなければならないということです。何らかの変数でないと、汎用性が足りません。
ですがどれだけ考えても、分からなかったので、この課題はこれが私の限界だと思います。
function setup() {
// 成績データ:3人×3科目
let scores = [
[85, 90, 78], // 0行目: 田中さんの国語、数学、英語
[92, 88, 95], // 1行目: 佐藤さんの国語、数学、英語
[76, 85, 82] // 2行目: 鈴木さんの国語、数学、英語
];
let table=""
let names = ["田中", "佐藤", "鈴木"];
let subjects = ["国語", "数学", "英語"];
for(let i=0;i<subjects.length;i++){
table=table+"\t"+subjects[i]
}
print(table)
for(let i=0; i<scores.length; i++){
table=""
for(let j=0; j<scores[i].length; j++){
table=table+scores[i][j]+"\t"
}
print(names[i]+"\t"+table)
}
}
学んだのは¥tと、printでどうやって配列を何回か読み込むかという問題についてです。
練習問題4-4-6
成績データから、各生徒の合計点を計算して表示しなさい。
function setup() {
let scores = [
[85, 90, 78],
[92, 88, 95],
[76, 85, 82]
];
let names = ["田中", "佐藤", "鈴木"];
let total = 0
for(let i=0; i<scores.length; i++){
total=0
for(let j=0; j<scores[i].length; j++){
total=total+scores[i][j]
}
print(names[i]+"さんの合計点数:"+total)
}
}
練習問題4-4-7
成績データから、各科目の平均点を計算して表示しなさい。
function setup() {
let scores = [
[85, 90, 78],
[92, 88, 95],
[76, 85, 82]
];
let subjects = ["国語", "数学", "英語"];
let average=0
for(let i=0; i<scores.length; i++){
average=0
for(let j=0; j<scores[i].length; j++){
average=average+scores[i][j]
}
average=Math.round((average/scores.length)*100)
average=average/100
print(subjects[i]+"の平均点数は"+average)
}
}
それ以外は特に問題なかったです。