HOME»基本情報技術者試験掲示板»27年秋問8の設問2のcなんですが
投稿する
27年秋問8の設問2のcなんですが [1127]
コアさん(No.1)
答えは3回とあるのですが、 TextとPatが違うときはTextが[B]なので2つ移動する。そしたらαは4回だと思うんですけど。。。どこを私は勘違いしているのでしょうか?
2018.03.10 13:38
あさん(No.2)
・Plast ← Plast + Skip[Index(Text[Plast])]←①
となっている行があると思います
この行はText[]のどの位置を比較するかという添字Plastを移動量により決定しています。
ここで移動量を決定するIndex関数の引数はText[Plast]なっています。
文字を比較するのにはPText←PlastとしてPTextの値を減らして行っています。
よって①を実行する際にはPlastの値は文字列を比較する際の最初の文字ということになります。
設問2の場合は
ABCXとABACの比較
Text[4](X)とPat[4](C)を比較 → Xの移動量4だけ移動
BBACとABACの比較
Text[4](C)とPat[4](C)を比較 → 一致
Text[4](A)とPat[4](A)を比較 → 一致
Text[4](B)とPat[4](B)を比較 → 一致
Text[4](B)とPat[4](A)を比較 → 一致しないので
Text[Plast](C)の移動量4だけ移動
略
一致する
という感じで検索されます
質問者さんの場合は比較のために用いる添字はPlastではなくPTextであることそれによって
移動量が間違ってしまったことによってそのような結果になったと思います。
となっている行があると思います
この行はText[]のどの位置を比較するかという添字Plastを移動量により決定しています。
ここで移動量を決定するIndex関数の引数はText[Plast]なっています。
文字を比較するのにはPText←PlastとしてPTextの値を減らして行っています。
よって①を実行する際にはPlastの値は文字列を比較する際の最初の文字ということになります。
設問2の場合は
ABCXとABACの比較
Text[4](X)とPat[4](C)を比較 → Xの移動量4だけ移動
BBACとABACの比較
Text[4](C)とPat[4](C)を比較 → 一致
Text[4](A)とPat[4](A)を比較 → 一致
Text[4](B)とPat[4](B)を比較 → 一致
Text[4](B)とPat[4](A)を比較 → 一致しないので
Text[Plast](C)の移動量4だけ移動
略
一致する
という感じで検索されます
質問者さんの場合は比較のために用いる添字はPlastではなくPTextであることそれによって
移動量が間違ってしまったことによってそのような結果になったと思います。
2018.03.10 17:06
コアさん(No.3)
理解できました。ありがとうございましたm(_ _)m
2018.03.10 18:26