HOME»基本情報技術者試験掲示板»令和元年秋期午後問8
投稿する

令和元年秋期午後問8 [2419]

 タロウさん(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
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop