こちらは素人です。ただのメモです。間違いありかも。
著作権など問題あればすぐに削除します。
2023年度からの基本情報技術者試験のサンプル問題(公開)があった。
(c2022 独立行政法人情報処理推進機構)2023年度から試験内容が変更されるらしい(疑似言語など)。
***************************************************
① プログラムの基本要素
問2 次のプログラム中の と に入れる正しい答えの組合せを,解答群
の中から選べ。ここで,配列の要素番号は 1 から始まる。
次のプログラムは,整数型の配列arrayの要素の並びを逆順にする。
〔プログラム〕
整数型の配列: array ← {1, 2, 3, 4, 5}
整数型: right, left
整数型: tmp
for (left を 1 から (arrayの要素数 ÷ 2 の商) まで 1 ずつ増やす)
right ← [a]
tmp ← array[right]
array[right] ← array[left]
[b] ← tmp
endfor
解答群
a b
ア array の要素数 - left array[left]
イ array の要素数 - left array[right]
ウ array の要素数 - left + 1 array[left]
エ array の要素数 - left + 1 array[right]
*************************************************
きちんと読まなかったので最初分からなかった。
要旨は単純に、「{1, 2, 3, 4, 5}を逆順にする」ということだった。
プログラムで確認しようと思ったが、pythonは久々で、インストールなど面倒なので、paiza IOのサイトでやってみた。
(どうもpaizaは、ステップ実行ができないみたい。)
解法1
array = [0,1,2,3,4,5]
for left in array[1: (len(array) - 1) // 2 +1]:
right = len(array) - 1 - left + 1
tmp = array[right]
array[right] = array[left]
array[left] = tmp
print(array)
#[0,5,4,3,2,1]
選択肢だと、こんな感じ。
上記は配列は0から入れた。
0でない場合は、下記の感じか
解法2
array = [1,2,3,4,5]
for left in array[0: len(array) // 2 ]:
right = len(array) - left
tmp = array[right]
array[right] = array[left - 1]
array[left - 1] = tmp
print(array)
#[5,4,3,2,1]
でも選択肢にない。
ヤフー知恵袋でC言語で解いていたのを参考にしたが、配列そのものは0始まりで考えた方がいいかも。
でも、この問題は、「考え方」を聞いているので、問題の意味さえ分かれば、プログラムすることはない。
「{1, 2, 3, 4, 5}を逆順にする」
→5,4,3,2,1になるような選択肢を選べばいい。
自分のような愚鈍な人間には合わない問題かも。
ちなみにpytonならtmpとか変数でなく、
array = [1,2,3,4,5]
array.reverse()
print(array)
#[5,4,3,2,1]
これでいい。
最初にこんなことでつまづいて嫌になる人が多いんだろうなあ。
メモ書きは許されるとしても、ディスプレイで考えるのは、結構面倒か(CBT)。
受けたことがないので分かりませんが。