パソコン素人です。
アルゴリズム素人です。
基本情報技術者試験の問題・テキスト等を見て気になったメモです。
多分間違っているのであまり見ないで下さい。すみません。
(記載内容や参考にしたネット情報など問題がありましたら、早急に削除いたします。)
問題文など、「基本情報技術者試験ドットコム」様を参考・引用させていただくことがあります。感謝。)
アルゴリズム H23 秋 午前 問7
選択肢
ア TANGO[i]→TANGO[i+1]
イ TANGO[i]→TANGO[n-i]
ウ TANGO[i+1]→TANGO[n-i]
エ TANGO[n-i]→TANGO[i]
この問題ですが、変数を考える基本的な問題だと思います。
意味は分かるが、でも、結構時間がかかる。(もどかしい。)
問題集には、「図を書け」と記載されているが、それだけだと分かりにくい気がする。
まず、tango[1]~tango[n]まで、単語が入っている。
仮に3単語とすると、
初め
tango[0]
tango[1] あ
tango[2] い
tango[3] う
の感じ。
n番目の単語を一番に持ってくるのだから、
結果
tango[0]
tango[1] う
tango[2] あ
tango[3] い
に入れ替えればいい。
アルゴリズムは最初に、
tango[n]→tango[0]
している。
途中
tango[0] う
tango[1] あ
tango[2] い
tango[3] う
あとは、tango[]の内容を一つ下に送ればいい。
アルゴリズムでは、
ループ i:n-1,-1,0
(変数名:初期値、増分、終値)
とある。
ここで、1個ずらしのことを図だけで(1個ずつ)考えるともどかしい。
(しかもステップを-1とし、後ろから回しているし・・・。)
<もどかしく思う点>
途中の、図のn-1から考えるのだからtango[2]から考えればいいが、面倒。
(一つずつ考えると・・・)
tango[2] 「い」 を tango[3] に入れる。
(これを間違ってtango[3]から考えてしまうとよく分からなくなる。)
<もう少し考えやすくする>
そこで、アルゴリズムをプログラムにする。
結局、
for i= n-1 to 0 step -1
処理内容:「上の配列の単語を下の配列に入れる」
next i
ということ。
for文で、n-1とnを初期値として使っているが、
処理内容から考えて、nではなく、for文の変数iを使えば良さそう。
ということで、
ア TANGO[i]→TANGO[i+1]
になる。
ただ、注意しなくてはいけないのは、矢印の向き。
普通なら(VBAとか)、
TANGO[i+1]=TANGO[i]
となるのに、反対に書かれている。
まったく簡単な内容なのに、試験だとややこしくなる。
いきなり、プログラムから書くくせになっているからだろうか・・・。