>設問1 a なぜイ? ... Max ← Maisu[i]
⇒
ループ2の処理は最大枚数の情報を求めています
Max....... 最大枚数
MaxCnt.. 最大枚数情報が存在する添字
このような比較後更新が必要な場合の殆どが初期値が必要となります
>設問1 bなぜオ? ....Jun[i] ← Jun[i - 1]
⇒
同じ枚数なら同順位を付与する
設問の中の解説で、『順位は「1,2,2,3,4・・・」』とあり、これは同一枚数の時は「一つ前の順位と同じにせよ」です。
>設問2 bなぜオ?
>ループ処理完了後に最後にもう一度「ランク処理」するのはなぜ?
⇒
トレース表の通りです。
ループ処理の中では最後の Jun[N]のランクが求まっていません
「実装構成が悪い」としか言い様がありません。
追記:
この設問は余り深く追求しない方が宜しいかと。
設問としての *問題点* が多すぎます。
1.処理自体が(a)ソート処理モドキ、(b)ランク処理モドキ
2.データ不備
3.トレース表の赤文字は処理がダブっている
等々
2.データ不備
交換処理は「★実質交換なし★」(i ≠ MaxCnt)時に交換処理は有効
MaxCntの初期値は、i
ループ2の中で (Maisu[j] \u0026gt; Max)の状態で始めて
MaxCnt = j; と更新されますが、データの並びが
Maisu[N+1] = {100, 90, 90, 80}; なので発生しません(後方データ値が小さい)。
(Maisu[i] = Maisu[i - 1])
判定式は
○ [=]ですよね?
[≠]とは違いますよね?
1.処理自体が(a)ソート処理モドキ、(b)ランク処理モドキ
以下に3つのデータパターンでの実行結果を載せときます
データ1 N ← 4
Maisu[N] ← {100, 90, 90, 80};
CD[N] ← {\u0026quot;タイ1\u0026quot;,\u0026quot;タイ2\u0026quot;,\u0026quot;タイ3\u0026quot;,\u0026quot;タイ4\u0026quot;};
順位1: タイ1 (100枚)
順位2: タイ2 (90枚)
順位2: タイ3 (90枚)
順位4: タイ4 (80枚)
※仕様通り動作
データ2 N ← 5
Maisu[N] ← {100, 90, 90, 80, 95};
CD[N] ← {\u0026quot;タイ1\u0026quot;,\u0026quot;タイ2\u0026quot;,\u0026quot;タイ3\u0026quot;,\u0026quot;タイ4\u0026quot;,\u0026quot;タイ5\u0026quot;};
順位1: タイ1 (100枚)
順位2: タイ5 (95枚)
順位3: タイ3 (90枚)
順位3: タイ2 (90枚)
順位5: タイ4 (80枚)
※仕様通り動作ではあるが(90枚)の情報が、タイ2、タイ3、が入れ替る現象。
データ3 N ← 5
Maisu[N] ← {90, 90,100, 80, 95};
CD[N] ← {\u0026quot;タイ1\u0026quot;,\u0026quot;タイ2\u0026quot;,\u0026quot;タイ3\u0026quot;,\u0026quot;タイ4\u0026quot;,\u0026quot;タイ5\u0026quot;};
順位1: タイ3 (100枚)
順位2: タイ5 (95枚)
順位3: タイ1 (90枚)
順位3: タイ2 (90枚)
順位5: タイ4 (80枚)
※ (90枚)の情報の並びが、「データ1」状態に戻る現象。
これらの現象は「安定性のないソートによる順序の揺らぎ」です
━