令和元年秋期午後問8

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
タロウさん
(No.1)
https://www.fe-siken.com/kakomon/01_aki/pm08.html
設問3のhについての質問です。関数GenerateBitMaskRegexの返却値であるPatLenの最終的な数値はいくつかを解かせる問題ですが、ここの解答が6であることに納得がいきません。解説によれば、「正規表現の先頭文字である"["を見つけると1になり、正規表現の終端文字である"]"に達すると0になります。つまり、2つ目のModeが0のときとは、正規表現ではない普通の文字のときであると判断できます。」と記述されています。プログラムではpat[i]="]"であるときMode←0になり、解説通りですが、Modeに0を代入した直後にMode=0でPatLen←Patlen+1の操作をしています。つまり。Pat[i]="]"の時、PatLenには1が加算されていることになりませんか?解説では、Pat[i]が"]"の時にはModeに0が入っているにもかかわらずPatLenに1を加算するのは"]"の次の文字からになっています。この点を解説して頂けたら幸いです。長文失礼いたしました。
2020.08.17 12:08
ミルキー@管理人
(No.2)
> Modeに0を代入した直後にMode=0でPatLen←Patlen+1の操作をしています。

プログラムの構造は以下のようになっています。

if (Pat[i] = "[") {
    Mode ← 0
} else {
    if (Mode = 0) {
        PatLen ← PatLen + 1
    }
    //省略
}

Pat[i] = "[" のときにPatLenがインクリメントされることはありません。
的外れな意見でしたらすみません。
2020.08.17 14:31
タロウさん
(No.3)
ご返信ありがとうございます。プログラムの構造について勘違いしていました。
的確なご回答ありがとうございました!
2020.08.17 19:31

返信投稿用フォーム

スパム防止のために初投稿日から10日以上経過したスレッドへの書き込みは禁止しています。

その他のスレッド


Pagetop