平成23年特別午後問8

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
文系脳さん  
FE ブロンズマイスター
(No.1)
https://www.fe-siken.com/kakomon/23_toku/pm08.html

c、e、fの解説をお願いします。それ以外は理解できた(つもり)のですが、この3つだけよくわかりません。
2021.01.27 21:57
関数従属さん 
FE ゴールドマイスター
(No.2)
>cについて

Next関数のループ処理の内部のIF文以降の処理の概要ですが、
配列Sの中で最初に1になる箇所をまず洗い出します。(IF S[L] = 1)
その後は1が連続している場合、1が連続している数を変数Cに加算していきます。(IF S[L] = 1 AND S[L+1] = 1)
1の次に0になる場合にS[L]とS[L+1]の1と0を入れ替えてInitを再び呼び出します。(IF S[L] = 1 AND S[L+1] = 0)

配列Sが01101の場合の例だと
変数L=2の場合に、S[L] = 1 AND S[L+1] = 1となり、変数Cが1加算され
変数L=3場合に、S[L] = 1 AND S[L+1] = 0となり、
S[L]とS[L+1]の1と0を入れ替えて01011にした後
Init(S,2,1)を呼び出す事になります。(Init後は10011となる)

この時は3,4番目の要素を入れ替え、
N=2としてInit関数を呼び出している為
cは「エ:より前」になるかと思います。

>e,fについて

ポイントとしては、
配列S内の1と0の数については、1が3個で、0が2個というのが
変わらないという部分になるかと思います。

Nの範囲eは
配列Sが10110の時、変数L=1の時にInit関数が呼び出されるので、最小値はL-1=0
配列Sが01110の時、変数L=4の時にInit関数が呼び出されるので、最大値はL-1=3
よって範囲は「イ:0 ~ 3」になるかと思います。

Kの範囲fは
配列Sが10110の時、変数L=1の時にInit関数が呼び出され、その時の変数Cは0の為、最小値は0
配列Sが01110の時、変数L=4の時にInit関数が呼び出され、その時の変数Cは2の為、最大値は2
よって範囲は「ア:0 ~ 2」になるかと思います。
2021.01.27 23:42
文系脳さん  
FE ブロンズマイスター
(No.3)
解説ありがとうございます。
2021.01.28 13:09

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop