ITパスポートの過去問
令和5年度
テクノロジ系 問5
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
令和5年度 ITパスポート試験 テクノロジ系 問5 (訂正依頼・報告はこちら)
手続printArrayは、配列integerArrayの要素を並べ替えて出力する。手続printArrayを呼び出したときの出力はどれか。ここで、配列の要素番号は1から始まる。
[プログラム]
○printArray()
整数型: n, m
整数型の配列: integerArray ←{2, 4, 1, 3}
for(nを1から(integerArrayの要素数 − 1)まで1ずつ増やす)
for(mを1から(integerArrayの要素数 − n)まで1ずつ増やす)
if(integerArray[m] > integerArray[m + 1])
integerArray[m]とintegerArray[m + 1]の値を入れ替える
endif
endfor
endfor
integerArrayの全ての要素を先頭から順にコンマ区切りで出力する
[プログラム]
○printArray()
整数型: n, m
整数型の配列: integerArray ←{2, 4, 1, 3}
for(nを1から(integerArrayの要素数 − 1)まで1ずつ増やす)
for(mを1から(integerArrayの要素数 − n)まで1ずつ増やす)
if(integerArray[m] > integerArray[m + 1])
integerArray[m]とintegerArray[m + 1]の値を入れ替える
endif
endfor
endfor
integerArrayの全ての要素を先頭から順にコンマ区切りで出力する
- 1, 2, 3, 4
- 1, 3, 2, 4
- 3, 1, 4, 2
- 4, 3, 2, 1
正解!素晴らしいです
残念...
この過去問の解説 (3件)
01
このような問題はプログラムの動きを順に確認していくことがポイントです
nを1から3(integerArrayの要素数[4]-1)まで1ずつ増やす
mを1から3(integerArrayの要素数[4]-n)まで1ずつ増やす
上記値を配列に沿って当てはめていきます
n=1
integerArray[1]=2>integerArray[2]=4
integerArray[2]=4>integerArray[3]=1
2つの位置を入れ替え=integerArray={2,1,4,3}
integerArray[3]=4>integerArray[4]=3
2つの位置を入れ替え=integerArray={2,1,3,4}
n=2
integerArray[1]=2>integerArray[2]=1
2つの位置を入れ替え=integerArray={1,2,3,4}
integerArray[2]=2、integerArray[3]=3
n=3
integerArray[1]=1、integerArray[2]=2
ループ処理時点
integerArray={1,2,3,4} となっているため、本肢が正解です
順番が誤っています
順番が誤っています
順番が誤っています
参考になった数14
この解説の修正を提案する
02
疑似言語でプログラミングされたものを手順通りに進めていきます。
文章理解力が試される問題ですが、問題文の通りに進めていくと自ずと正答を導くことができます。
問題文は、変数nとmを用いて配列の中の[2、4、1、3]の4つの数字を並べ替えていく手続を疑似言語で書き表しています。
この問題でまず注目すべきは、「for」を含む構文と「if」を含む構文です。
for を含む構文(繰り返しの手続)は2つありそれぞれ、
① 変数nを1から+1をし、配列中の数字の数になるまで繰り返す
② 変数mを1から+1をし、変数nになるまで繰り返す
という意味を持ち、if を含む構文(手続きの条件)は、
① 配列中の数字が右隣りの数字よりも大きい
という意味を持ちます。
手続を進めていくと、
① n=1 配列[1]= 2 は、配列[2]= 4 よりも小さいので、
並べ替えなし
② n=2 配列[1]= 2 は、配列[2]= 4 よりも小さいので、
並べ替えなし
配列[2]= 4 は、配列[3]= 1 よりも大きいので、
並べ替えあり
③ n=3 配列[1]= 2 は、配列[2]= 1 よりも大きいので、
並べ替えあり
配列[2]= 2 は、配列[3]= 4 よりも小さいので、
並べ替えなし
配列[3]= 4 は、配列[4]= 3 よりも大きいので、
並べ替えあり
並べ替えの結果[ 1 、 2 、 3 、 4 ]となり、正解は本肢となります。
参考になった数9
この解説の修正を提案する
03
アルゴリズムに関する問題です。
①(nを1から(integerArrayの要素数 − 1)まで1ずつ増やす)とは、
integerArrayの要素数は4のため、nを1から3まで1ずつ増やします。
②(mを1から(integerArrayの要素数 − n)まで1ずつ増やす)とは、
nに入る数が、①より1と2と3のため、②にあてはめて順番に処理していきます。
③①と②よりnとmの数値が確定したら、
if(integerArray[m] > integerArray[m + 1])
integerArray[m]とintegerArray[m + 1]の値を入れ替える
の処理を実行します。
上記を踏まえて当てはめていくと
1)n = 1、m = 1のとき
integerArray[1]=2、integerArray[2]=4のため、入れ替えなしです。
2)n = 1、m = 2のとき
integerArray[2]=4、integerArray[3]=1のため、
入れ替えると{2, 1, 4,3}となります。
3)n = 1、m = 3のとき
integerArray[3]=4、integerArray[4]=3のため、
入れ替えると{2, 1, 3,4}となります。
4)n = 2、m = 1のとき
integerArray[1]=2、integerArray[2]=1のため、
入れ替えると{1,2,3,4}となります。
5)n = 2、m = 2のとき
integerArray[2]=2、integerArray[3]=3のため、入れ替えなしです。
6)n = 3、m = 1のとき
integerArray[1]=1、integerArray[2]=2のため、入れ替えなしです。
よって、{1,2,3,4}となります。
{1,2,3,4}となるため、本選択肢は正しいです。
アルゴリズムの問題は、丁寧にあてはめて順番に解いていくと答えが導き出せます。
あせらずに取り組みましょう。
参考になった数8
この解説の修正を提案する
前の問題(問4)へ
令和5年度問題一覧
次の問題(問6)へ