アプリ版:「スタンプのみでお礼する」機能のリリースについて

平成17年 春期 基本情報技術者 午後
問02   文字列を置換するプログラム
dの回答が
イ B[Bidx] ← S[0]
である 理由が 理解できません
どなたか解説を お願いします

A 回答 (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]

となります。
    • good
    • 0
この回答へのお礼

理解できました
ひねくれです

お礼日時:2007/06/26 08:12

訂正:


つい癖で
=で全部書いてたけど
適度に←に読み替えてください
    • good
    • 0

解ってもらえるか自身がない


んーっと、「何でアじゃないんだー」ってことが聞きたいんだろうと思うので、それを前提に解説を行うけど,

問題文中の
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)

ではないよね?
    • good
    • 0
この回答へのお礼

やはりトレースですね
ありがとうございます

お礼日時:2007/06/26 08:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!