応用情報技術者試験の過去問&キーワードを動画2443本の動画で解説!スキマ時間に動画!※2017年9月11日現在

PR広告

平成28年度秋 応用情報技術者試験 午後問3 プログラミング 設問3 合格率アップ!動画付き解説!

魔方陣に関する次の記述を読んで、設問1~3に答えよ。

 魔方陣とは、正方形のマス目(方陣)に数を配置し、縦・横・対角線のいずれにおいても、その並びの数の合計が同じになるものである。ここでは、N×Nの方陣(Nは3以上の自然数)に1からN2までの数を過不足なく配置したものとする。このとき、縦・横・対角線のN個のマスの合計値は、いずれも(+N)÷2となる。

 Nが3の場合の魔方陣の一つを図1に示す。

4 9 2
3 5 7
8 1 6

図1 3×3の魔法陣の一つ

 Nが奇数の場合、魔方陣の一つを次の手順で作ることができる。N=3のときに、この手順によって1~6の数が配置される様子を図2に示す。

〔魔方陣の作り方〕

 魔方陣の作り方は、次のとおりである。ここで(A)~(E)は図2中の該当箇所を示す。

(1) N×Nの全てのマスは何も入っていない空白の状態とする。

(2) 最下行の中央のマスを現在位置とし、現在位置に数1を配置する(A)。

(3) 現在位置の右下のマスが空白かどうか確認する。このとき、最下行の下は最上行(B)、最右列の右は最左列(C)とする。右下隅の右下は、左上隅(D)である。

(4) (3)で確認したマスが空白の場合は、そこを新しい現在位置とする。(3)で確認したマスが空白でない場合は、現在位置の上のマスを新しい現在位置とする(E)。この際、新しい現在位置が最上行よりも上になることはない。

(5) 数を一つ増やし、現在位置にその数を配置する。

(6) 全てのマスが埋まるまで、 (3)~(5)を繰り返す。

平成28年度秋 応用情報技術者試験午後 午後問3 プログラミング 合格率アップ!動画解説!

〔魔方陣のプログラム〕

 魔方陣の数の配置を記憶する、整数型の2次元配列 houjin を用意する。配列の添字は1から始まる。行y列xのマスは、houjin[y][x] で表現する。例えば、 図1中の1が配置されているマスは、houjin[3][2] である。

 数の配置に関する判定をするために、配列 houjin の領域を(N+1)×(N+1)の大きさで用意し、適切な初期値を設定する。Nが3の場合の例を図3に示す。数が既に配置されているかどうかを判定するために、図3の太枠内の各マスの初期値は0とする。また、現在位置の右下のマスが太枠の外であることを判定するために、 4行目のマスに SOTO_SHITA、 4列目のマスにSOTO_MIGI、行4列4のマスにSOTO_KADOの三つの異なる定数(0からN2までの整数以外の整数)を初期値として設定する。

平成28年度秋 応用情報技術者試験午後 午後問3 プログラミング 合格率アップ!動画解説!

 配列 houjin の初期化をする関数 shokika、及び数を配置する関数 mahoujin のプログラムを図4に示す。引数Nは、正の奇数(N≧3)である。

function shokika(N)
  for( yを1からNまで1ずつ増やす )
    for( xを1からNまで1ずつ増やす )
      houjin[y][x] ← 0
    endfor
     ← SOTO_MIGI
  endfor
  for( xを1からNまで1ずつ増やす )
     ← SOTO_SHITA
  endfor
  houjin[N+1][N+1] ← SOTO_KADO
endfunction

function mahoujin(N)
  y ← N
  
  suuji ← 1
  houjin[y][x] ← suuji
  
  while( suujiが )
    yb ← y
    xb ← x
    
    /* (F) はここから */
    y ← y+1
    x ← x+1
    if( houjin[y][x]がSOTO_SHITAと等しい )
      y ← 1
    elseif( houjin[y][x]がSOTO_MIGIと等しい )
      x ← 1
    elseif( houjin[y][x]がSOTO_KADOと等しい )
      y ← 1
      x ← 1
    endif
    /* (F) はここまで */
    
    if( houjin[y][x]が0と等しくない )
      y ← 
      x ← 
    endif
    
    suuji ← suuji+1
    houjin[y][x] ← suuji
  endwhile
endfunction

図4 魔法陣のプログラム

〔プログラムの判定部分の改変〕

 図4のプログラムによるメモリ使用量の削減のために、配列 houjin の領域をN×Nに縮小し、定数SOTO_SHITA、 SOTO_MIGI及びSOTO_KADOを使わないようにするプログラムの改変を考えた。図4の(F)の部分を改変したプログラムを図5に示す。

y ← y+1
x ← x+1
if( yがよりも大きい )
  y ← 
endif
if( xがよりも大きい )
  x ← 
endif

図5 図4の(F)の部分を改変したプログラム

設問3

図5中のに入れる適切な字句を答えよ。

動画解説

解説

(F)の部分は方陣外での処理です。

houjin[3][2]に1を代入したあとは

houjin[4][3]に移動します。

「この時、方陣外なので、y = 1とし」

houjin[1][3]に移動して、2を代入します。

「この時、方陣外なので、y = 1とし」の部分が

y ← y + 1
x ← x + 1
if( yがよりも大きい )
  y ← 
endif

となります。

houjin[4][3]の時houjin[1][3]にしています。

これを言い換えると

y = 4の時、y = 1にしています。

y = 4とは、N(= 3)よりも大きい時です。

ここの部分が

if( yがク Nよりも大きい )

となります!

また、yがク Nよりも大きい時、y = 1にしていますので

y ← ケ 1

となります!

上記は方陣下の部分です。方陣右の部分は

if( xがク Nよりも大きい )
    x ← ケ 1
endif

で制御します!

平成28年度秋 応用情報技術者試験午後

問1 情報セキュリティ 設問1

問1 情報セキュリティ 設問2

問1 情報セキュリティ 設問3

問2 経営戦略 設問1

問2 経営戦略 設問2

問2 経営戦略 設問3

問2 経営戦略 設問4

問3 プログラミング 設問1

問3 プログラミング 設問2

問3 プログラミング 設問3

問4 システムアーキテクチャ 設問1

問4 システムアーキテクチャ 設問2

問4 システムアーキテクチャ 設問3

問4 システムアーキテクチャ 設問4

問5 ネットワーク 設問1

問5 ネットワーク 設問2

問5 ネットワーク 設問3

問6 データベース 設問1

問6 データベース 設問2

問6 データベース 設問3

問6 データベース 設問4

問8 情報システム開発 設問1

問8 情報システム開発 設問2

問8 情報システム開発 設問3

問8 情報システム開発 設問4

問9 プロジェクトマネジメント 設問1

問9 プロジェクトマネジメント 設問2

問9 プロジェクトマネジメント 設問3

問10 サービスマネジメント 設問1

問10 サービスマネジメント 設問2

問10 サービスマネジメント 設問3

問11 システム監査 設問1

問11 システム監査 設問2

問11 システム監査 設問3

問11 システム監査 設問4

問11 システム監査 設問5

問11 システム監査 設問6


PR広告

フェイスブックコメント

難解な応用情報技術者試験午前で80点中48点を取る優しい方法

平成28年度春 応用情報技術者試験 午後 テキスト・動画解説

平成28年度春 応用情報技術者試験 午後 動画解説再生リスト

平成28年度春 応用情報技術者試験 午前 テキスト・動画解説

平成28年度秋 応用情報技術者試験 午前 動画解説再生リスト

平成27年度秋 応用情報技術者試験 午前 テキスト・動画解説

平成27年度秋 応用情報技術者試験 午前 動画解説再生リスト

平成27年度春 応用情報技術者試験 午後 テキスト・動画解説

平成27年度春 応用情報技術者試験 午後 動画解説再生リスト

平成27年度春 応用情報技術者試験 午前 テキスト・動画解説

平成27年度春 応用情報技術者試験 午前 動画解説再生リスト

平成26年度秋 応用情報技術者試験 午前 テキスト・動画解説

平成26年度秋 応用情報技術者試験 午前 動画解説再生リスト

平成26年度春 応用情報技術者試験 午前 テキスト・動画解説

平成26年度春 応用情報技術者試験 午前 動画解説再生リスト