HOME»基本情報技術者試験掲示板»大原本 練習38 魔方陣のアルゴリズム
投稿する

[5413] 大原本 練習38 魔方陣のアルゴリズム

 jjon-comさん(No.1) 
FE ゴールドマイスター
(この書き込みは質問ではありません。情報提供です)

このサイトの掲示板で
基本情報技術者[科目B]アルゴリズムとプログラミング トレーニング問題集 第2版 (大原出版)
に掲載されている「練習38 魔方陣のアルゴリズム」についてのご質問に対応した際,私自身が疑問に思った点があったので大原出版に問い合わせをしてみました。
同じ疑問を持つ人がいるかもしれないので,大原出版からの回答をご紹介しておきます。

●p.51の擬似言語(該当箇所のみ抜粋)
if (((iがnより大きい) and (jがnより大きい))
    or (a[i,j]が0と等しくない))
  i←(1)
  j←(2)
else if (iがnより大きい)
  (3)
else if (jがnより大きい)
  (4)
endif

●私から大原出版への指摘
★1の判定と同じ位置に★4の判定を書くと、
a[i,j]が配列の範囲外を参照してしまう。
★1 ★2 ★3を範囲検査をすべて終えた後で
★4の判定をおこなうこと。正しいコードは以下のとおり。

if ((iがnより大きい) and (jがnより大きい))  //★1
  i←(1)
  j←(2)
else if (iがnより大きい)  //★2
  (3)
else if (jがnより大きい)  //★3
  (4)
else if (a[i,j]が0と等しくない)  //★4
  i←(1)
  j←(2)
endif

●大原出版からの回答
お問い合わせいただいた件につきましては、誤りではございません。
この問題では、二次元配列aは呼出し元で宣言されていると
考えることができます。
呼出し元から副プログラムmagic_squareを呼び出す際、
二次元配列の行数(列数)を引数nに渡しますが、nに渡す
値を3、5、7などと変えることにより、様々なサイズに対応
できるように、二次元配列aは、3×3のような決め打ちでは
なく、大きなサイズで宣言されているとお考え下さい。
2024.04.24 10:53
返信投稿用フォーム

お名前

顔アイコン


本文(コミュニティガイドライン⇱を順守して適切な投稿を心がけましょう)

投稿削除用のパスワード(20文字以内)

投稿プレビュー
※CBT試験では出題内容の公開が禁止されているため、直接的・間接的を問わず、出題内容や難易度を尋ねる質問は厳禁です。
※宣伝や迷惑行為を防止するため、当サイトとIPAサイト以外のURLを含む文章の投稿は禁止されています。

投稿記事削除用フォーム

投稿No. パスワード 
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop