令和6年度 ITパスポート 問62(テクノロジ)
出典:令和6年度 ITパスポート試験 公開問題 問62(独立行政法人情報処理推進機構(IPA))
関数convertは,整数型の配列を一定のルールで文字列に変換するプログラムである。関数convertをconvert(arrayInput)として呼び出したときの戻り値が“AABAB”になる引数arrayInputの値はどれか。ここで,arrayInputの要素数は1以上とし,配列の要素番号は1から始まる。
〔プログラム〕
○文字列型: convert(整数型の配列: arrayInput)
文字列型: stringOutput ← "" // 空文字列を格納
整数型: i
for (i を 1 から arrayInput の要素数 まで 1 ずつ増やす)
if (arrayInput[i] が 1 と等しい)
stringOutput の末尾 に "A" を追加する
else
stringOutput の末尾 に "B" を追加する
endif
endfor
return stringOutput
- ア{0, 0, 1, 2, 1}
- イ{0, 1, 2, 1, 1}
- ウ{1, 0, 1, 2, 0}
- エ{1, 1, 2, 1, 0}
正解と解説を見る
正解:エ
【プログラムの動き】
関数convertは、配列arrayInputの要素を先頭から順に調べ、要素が1なら"A"、1以外なら"B"を、文字列stringOutputの末尾に追加していきます。最後に、できた文字列を返します。
つまり、戻り値の各文字は、配列の同じ位置の要素に対応します。
・"A":その位置の要素が1
・"B":その位置の要素が1以外(0や2など)
【戻り値"AABAB"になる配列】
"AABAB"を1文字ずつ見ると、配列の要素は次の条件を満たす必要があります。
1番目:1、2番目:1、3番目:1以外、4番目:1、5番目:1以外
【選択肢の検討】
ア:{0, 0, 1, 2, 1} は "BBABA" になります。
イ:{0, 1, 2, 1, 1} は "BABAA" になります。
ウ:{1, 0, 1, 2, 0} は "ABABB" になります。
エ:{1, 1, 2, 1, 0} は "AABAB" になり、条件を満たします。
よって、正解は選択肢エです。