回答編集履歴
1
なぜか見切れていたものを修正
answer
CHANGED
@@ -16,7 +16,6 @@
|
|
16
16
|
二つ目。『**"現実世界でならどうするか"を考えよ**』。
|
17
17
|
|
18
18
|
必ずこの方法でないとダメということではありませんが、少なくとも矢鱈目ったらに書くよりは効率的です。
|
19
|
-
|
20
19
|
プログラミングは「現実世界のシミュレーション」です。なので、現実世界で考えてみましょう。
|
21
20
|
|
22
21
|
```
|
@@ -28,10 +27,7 @@
|
|
28
27
|
的な依頼かなんかだとして、上司か友人か誰かが貴方/貴女に言ったとします。
|
29
28
|
どのように対処しますか?
|
30
29
|
|
31
|
-
私なら、{氏名,年齢}を一つのデータとして見なす。
|
32
|
-
それをノートかなんかに記録していく。
|
33
|
-
そして、そのノートを見て、『年齢』の部分を基準(キー)にして年齢が高い方を選択する。
|
34
|
-
すると、{氏名,年齢}で一つなので、年齢さえわかれば名前もわかる…という風にできます。
|
30
|
+
私なら、{氏名,年齢}を一つのデータとして見なす。それをノートかなんかに記録していく。そして、そのノートを見て、『年齢』の部分を基準(キー)にして年齢が高い方を選択する。すると、{氏名,年齢}で一つなので、年齢さえわかれば名前もわかる…という風にできます。
|
35
31
|
|
36
32
|
この場合、
|
37
33
|
|
@@ -74,19 +70,12 @@
|
|
74
70
|
|
75
71
|
のような名簿リストになっているとしたら、どういう風にやりますか?
|
76
72
|
|
77
|
-
私なら、まず単に最大値を求めます。太郎は21歳なので、これを暫定一位とします。
|
78
|
-
そしてノートかどこかに``暫定一位: 21``のような感じで記録します。
|
79
|
-
でもこのままだと最後までやると『どこのデータか』がわからなくなりますね。
|
80
|
-
なので『どこにあったものか』も記録しておく必要があります。
|
81
|
-
よって、``暫定一位: 21歳, 場所: 1人目`` のように記録しておく。横並びでも縦並びでもいいですが。
|
73
|
+
私なら、まず単に最大値を求めます。太郎は21歳なので、これを暫定一位とします。そしてノートかどこかに``暫定一位: 21``のような感じで記録します。でもこのままだと最後までやると『どこのデータか』がわからなくなりますね。なので『どこにあったものか』も記録しておく必要があります。よって、``暫定一位: 21歳, 場所: 1人目`` のように記録しておく。横並びでも縦並びでもいいですが。
|
82
74
|
|
83
75
|
で、2人目の次郎。20歳ですね。で、現在の暫定一位は21歳。21と20はどちらが年上でしょうか。
|
84
76
|
普通に考えれば21歳ですよね。つまり暫定一位が大きい。なので何もせずに次の人へ。
|
85
77
|
|
86
|
-
三人目はかめ。64歳ですね。21歳と64歳はどちらが年上でしょうか。そう、64歳ですね。
|
78
|
+
三人目はかめ。64歳ですね。21歳と64歳はどちらが年上でしょうか。そう、64歳ですね。つまり暫定一位よりもかめの方が年上。よって、暫定一位を21から64に書き換えます。ついでに場所も1人目から3人目に書き換えましょう。よって、``暫定一位: 64歳, 場所: 3人目``のようになるはずです。
|
87
|
-
つまり暫定一位よりもかめの方が年上。よって、暫定一位を21から64に書き換えます。
|
88
|
-
ついでに場所も1人目から3人目に書き換えましょう。
|
89
|
-
よって、``暫定一位: 64歳, 場所: 3人目``のようになるはずです。
|
90
79
|
|
91
80
|
これを最後まで繰り返すと、``暫定一位: 72歳, 場所: 4人目`` となるはずです。
|
92
81
|
|
@@ -96,16 +85,11 @@
|
|
96
85
|
|
97
86
|
一応、今回は場所も記録していますが、今回の場合は「場所」ではなく、『暫定一位のデータ丸ごと』を持ってもいいです。つまり、{人名,年齢}を構成している構造体で保持してもいいです。
|
98
87
|
|
99
|
-
で、暫定一位だの場所だののような記録は変数とかでやればいいですね。
|
88
|
+
で、暫定一位だの場所だののような記録は変数とかでやればいいですね。{人名,年齢}で一つのデータと見なすのは構造体で出来そうですね。この構造体の配列を使えば名簿リスト的なものにできますね。
|
100
|
-
{人名,年齢}で一つのデータと見なすのは構造体で出来そうですね。
|
101
|
-
この構造体の配列を使えば名簿リスト的なものにできますね。
|
102
89
|
|
103
|
-
1人目からN人目(最後尾)までを見るにはfor文でできそうですね。
|
104
|
-
最高齢か……みたいなのはif文で「暫定一位の年齢」と比較すれば出来そう。
|
90
|
+
1人目からN人目(最後尾)までを見るにはfor文でできそうですね。最高齢か……みたいなのはif文で「暫定一位の年齢」と比較すれば出来そう。暫定一位の更新もif文の処理のやつで出来そう。
|
105
|
-
暫定一位の更新もif文の処理のやつで出来そう。
|
106
91
|
|
107
|
-
で、暫定一位についてですが、最初は強制的に1人目を暫定一位と認定していますが、
|
108
|
-
暫定一位の初期値を0とか-1とかみたいにあり得ないほど小さい値にしておけばできるはずです。
|
92
|
+
で、暫定一位についてですが、最初は強制的に1人目を暫定一位と認定していますが、暫定一位の初期値を0とか-1とかみたいにあり得ないほど小さい値にしておけばできるはずです。
|
109
93
|
|
110
94
|
最高齢を計算した後に人名とかを出力するときには、構造体の配列を persons[pos].name とかみたいにアクセスすればよさそうですね。
|
111
95
|
|