共通テスト(情報) 過去問
令和6年度(2024年度)本試験
問38 (<旧課程>情報関係基礎(第3問) 問3)

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

共通テスト(情報)試験 令和6年度(2024年度)本試験 問38(<旧課程>情報関係基礎(第3問) 問3) (訂正依頼・報告はこちら)

次の文章を読み、( ウ )にあてはまるものを1つ選べ。

魔方陣とは、1から順に重複しない自然数を、各列、各行、各対角線の和が等しくなるように正方形状に並べたものである。列数と行数がいずれもNである魔方陣を「N次の魔方陣」と呼ぶ。図1は「3次の魔方陣」の例である。

与えられた数の並びが魔方陣かどうかを検証する準備として、各列や各行、各対角線の和を求め、表示する手続きを作成する。数の並びは、一番左の列を第0列、一番上の行を第0行として、第x列第y行の値が2次元配列Mahou[x,y]の要素に格納された形で与えられる。N次の魔方陣では、配列の添字の範囲は0からN−1までとなる。図1の場合、1が記入されているマスは第1列第2行なので、Mahou[1,2]と表せる。
第0行の和を求めるには、Mahou[0,0]、Mahou[1,0]、Mahou[2,0]を足し合わせる。同様に、第1行の和を求めるには、Mahou[( ア ),1]、Mahou[1,( イ )]、Mahou[2,( イ )]を足し合わせる。各行の和を求めて表示する手続きが図2である。変数Nには魔方陣の次数を格納する。各行の和は変数waを使用して計算され、行ごとに表示される。

図2 配列Mahouの各行の和を求めて表示する手続き

(01)N←3
(02)gyouを0からN−1まで1ずつ増やしながら,
(03)│  wa←0
(04)│ retuを0からN−1まで1ずつ増やしながら,
(05)│  │ wa←wa+( ウ )
(06)│ を繰り返す
(07)│ waを表示する
(08)を繰り返す

また、各列の和を計算するには、図2の手続きのうち(02)行目と(04)行目の変数gyouと変数retuを入れ替える。
問題文の画像
  • N−1
  • Mahou[retu,gyou]
  • Mahou[retu−1,gyou−1]
  • Mahou[N,N]
  • Mahou[N−1,N−1]
  • 1

正解!素晴らしいです

残念...

この過去問の解説 (3件)

01

変数waには、各行の和を格納します。
( ウ )には、各マスの値を入れます。

選択肢1. N−1


変数Nには魔方陣の次数((01)N←3)が格納されています。

N−1は常に2であり、各マスの値を取り出すことはできません。

選択肢2. Mahou[retu,gyou]


Mahou[0,0]
Mahou[1,0]
Mahou[2,0]



と順番に各マスの値を取り出すことができます。

選択肢3. Mahou[retu−1,gyou−1]


retuもgyouも0から始まるので、例えば最初の( ウ )はMahou[-1,-1]となり、各マスの値を正しく取り出すことができません。

選択肢4. Mahou[N,N]


変数Nには魔方陣の次数((01)N←3)が格納されています。

Mahou[3,3]はありません。

選択肢5. Mahou[N−1,N−1]


変数Nには魔方陣の次数((01)N←3)が格納されています。

つまり、Mahou[2,2]の値だけ取り出すことができます。

選択肢6. 1


列数を数えることはできますが、各行の和は求められません。

参考になった数0

02

この問題は、コード(05)行「wa←wa+(ウ)」の(ウ)に入る式を考えます。このコードでは外側のループで行番号(gyou)、内側のループで列番号(retu)を変化させています。「第retu列・第gyou行」のセルは配列Mahou[列,行]の表記からMahou[retu,gyou]と表せます。この要素を繰り返しwaに加算することで各行の合計を求めることができます。

選択肢1. N−1

N−1は定数(3次の場合は2)であり、現在のループ位置を表す変数ではありません。各マスの値(Mahou要素)を加算する必要があるため、N−1を足し続けることは誤りです。正しくありません。

選択肢2. Mahou[retu,gyou]

Mahou[retu,gyou]は「第retu列・第gyou行」のセルを表します。外側ループでgyou(行)を0〜N-1と変化させ、内側ループでretu(列)を0〜N-1と変化させることで、その行のすべてのセルを順に参照してwaに加算できます。正解の選択肢です。

選択肢3. Mahou[retu−1,gyou−1]

Mahou[retu−1,gyou−1]は添字をそれぞれ1ずつ減らしたセルを参照します。gyou=0のとき添字が−1となり範囲外です。また正しいセルを参照するためにはretu・gyouをそのまま使うべきで、減算は不要です。正しくありません。

選択肢4. Mahou[N,N]

Mahou[N,N]はNが3の場合Mahou[3,3]となりますが、添字の範囲は0〜N−1(0〜2)です。Mahou[3,3]は範囲外で存在しないセルです。また毎回同じセルを加算し続けることになり、各行の和を求める処理にもなりません。正しくありません。

選択肢5. Mahou[N−1,N−1]

Mahou[N−1,N−1]はNが3の場合Mahou[2,2](第2列第2行の右下のセル)を常に参照します。毎回同じ1つのセルしか参照しないため、行全体の和を求めることができません。正しくありません。

選択肢6. 1

1は単なる定数であり、各マスの要素の値ではありません。配列の各要素はそれぞれ異なる値を持つため、1を繰り返し加算しても意味のある計算にはなりません。正しくありません。

まとめ

二重ループで2次元配列の全要素を処理するとき、外側のループ変数(行:gyou)と内側のループ変数(列:retu)を使ってMahou[retu,gyou]のようにアクセスするのが基本パターンです。配列の第1引数が列、第2引数が行であることをしっかり確認しましょう。

参考になった数0

03

正解は「Mahou[gyou,retu]」です。

 

【問題文の情報】

(01)N←3                    ←3次の魔法陣
(02)gyouを0からN−1まで1ずつ増やしながら,   ←gyouがy、0から2まで
(03)│  wa←0
(04)│ retuを0からN−1まで1ずつ増やしながら,    ←retuがx、0から2まで
(05)│  │ wa←wa+( ウ )         ←gyou、retuが入っている選択肢を選ぶ
(06)│ を繰り返す
(07)│ waを表示する
(08)を繰り返す

 

したがって、gyou、retuが入っているMahou[retu,gyou]が答えです。

 

 

 

参考になった数0