HOME»基本情報技術者試験掲示板»平成27年秋期午後問8  (b)

基本情報技術者試験掲示板

掲示板検索:

平成27年秋期午後問8  (b)[2240]

koさん(No.1)

https://www.fe-siken.com/kakomon/27_aki/pm08.html
(b)の答えがPatLen-Iとなるのはどうしてですか?
本文のPatの例ACABを例に取ってもSkipの値がうまく決定されないんですが

2020.03.23 14:56
koさん(No.2)

あと設問2の(d)が7となる理由もわからないです。
PPatが1になりときなんて、最後まで一致してる時だから
答えは1では無いんですか?

2020.03.23 15:36
QMさん(No.3)

b は、プログラムの説明の、(2)のAに対応する処理です。
「その文字が、検索文字列の末尾から何文字目に現れるかを数えた文字数から1を引いた値」

長さPatLenの文字列の、前からI文字目は、末尾から数えると何文字目か。
前から1文字目なら、末尾からだと PatLen
2文字目なら PatLen-1
3文字目なら PatLen-2
  ・・・
I文字目なら PatLen-I+1

ここから1を引くので PatLen-I です。


d は、βの部分ですね。
PPatが1になるのは一致した1回ですが、問題は条件が成立した回数ではなく、
成立しなかった回も含めて「1になっているかどうかの確認」をした回数を聞いています。

Text[PText] = Pat[PPat] つまり文字が一致した場合に、
Patの先頭まで来た(全部一致した)かどうかを確認しています。

動作をトレースすると。
まず Textの 1〜4と比較。
4 がいきなり不一致なので、4文字ずらして5〜8へ。
8, 7, 6 と一致するので、ここでβは 3回実行。
5が一致しないので、末尾のCのskip値を使って、4文字ずらして9〜12へ。
ここで4文字一致するので、βを 4回実行して終わり。

2020.03.23 16:56
koさん(No.4)

回答していただき大変助かります。ありがとうございます!!
ただ1点だけ、
条件式(今回の場合だと、PPat=1)が、真になっていなかったとしても、
条件式に対して偽の判断が行われたのだから、βは1回分の実行がされたと
、という理解でよろしいですか?

2020.03.23 18:23
QMさん(No.5)

> 条件式(今回の場合だと、PPat=1)が、真になっていなかったとしても、
> 条件式に対して偽の判断が行われたのだから、βは1回分の実行がされたと
> 、という理解でよろしいですか? 

そうです。
「PPat=1 か? 真偽を答えなさい」
という命令が実行されたと考えてください。
実行しないと真偽が出てきません。

2020.03.23 20:20
koさん(No.6)

ありがとうました
モヤモヤが晴れました(^^)

2020.03.24 09:00

【返信投稿用フォーム】

お名前(10文字以内)

顔アイコン


本文(2,000文字以内)

記事削除用パスワード(20文字以内)

プレビュー

※宣伝や迷惑行為を防止するため当サイトとIPAサイト以外のURLを含む記事の投稿は禁止されています。

投稿記事削除用フォーム

投稿No. パスワード 
© 2010-2020 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop