- ベストアンサー
平成17年 春期 基本情報技術者 午後 教えてください
平成17年 春期 基本情報技術者 午後 問02 文字列を置換するプログラム dの回答が イ B[Bidx] ← S[0] である 理由が 理解できません どなたか解説を お願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
D[Didx]≠EOS ・B[Bidx]←D[Didx] ・Didx←Didx+1 ・Bidx←Bidx+1 は、S[2]、つまり S[Sidx]がEOFで'ab'と照合した時に置換します。 一方、 ・B[Bidx]←S[0] ・Aidx←Aidx+1 ・Bidx←Bidx+1 は照合しなかったため、元のA[idx]の値をB[Bidx]にそのまま代入します。 そもそも先頭付近でA[Aidx]=S[0]ならこれらの 処理を行っているのですから必然的にこの、A[idx]はS[0]となり、 B[Bidx] ← S[0] となります。
その他の回答 (2)
- himajin100000
- ベストアンサー率54% (1660/3060)
訂正: つい癖で =で全部書いてたけど 適度に←に読み替えてください
- himajin100000
- ベストアンサー率54% (1660/3060)
解ってもらえるか自身がない んーっと、「何でアじゃないんだー」ってことが聞きたいんだろうと思うので、それを前提に解説を行うけど, 問題文中の A[] = aabcabb[EOS] S[] = ab[EOS] で考えると、 まず、 Idx = 0のとき A[0] = S[0] で (Idx = 0, Aidx = 0, Bidx = 0,Sidx = 0,S[0] = a) Sidx = Sdx + 1 Aidx = Adx + 1 (Idx = 0, Aidx = 1, Bidx = 0, Sidx = 1) A[1] = a S[1] = bで A[1] ≠ S[1] (Idx = 0, Aidx = 1, Bidx = 0,Sidx = 1) この時、条件が一致しないから やるべき処理は B[Bidx] = A[Idx]またはB[Bidx] = S[0] であって (俺だったら後者じゃなく前者でコードを書くので混乱したが、選択肢に無いので。ここにくることになった条件文を考えればA[Idx] = S[0]は自明) B[Bidx] = A[1] (Idx = 0, Aidx = 1, Bidx = 0,Sidx = 1,A[1] = b) ではないよね?
お礼
やはりトレースですね ありがとうございます
お礼
理解できました ひねくれです