平成29年秋期試験  午後問9

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
ITビギナーさん  
(No.1)
ご教授願います。
以前、解き直しで納得していたと思ってたのですが、再度見直しで躓いてしまいました。
   [プログラム] 35行目
   while(!isalnum(chars[l])){
   ですが、isalnum(ch)は英数字→0以外なので仮にchが'a'のときは0以外となり、while(!isalnum(chars[l]))はwhile(!(0以外)) でwhile(0)となりループが進みません。
この35,38行目のwhile文は記号や空白のフィルタリング目的と考えてよいのでしょうか。
よろしくお願いします。
2020.07.08 20:58
管理人 
(No.2)
「文字の並びを読むとき,記号及び空白文字は無視する。」という仕様を実現するため、回文判定をするときこれらをスキップするループ処理です。

chars[l]が英数字であれば次の文字に進める必要はないので、while 内を実行せずそのままchars[r]と比較し、chars[l]が空白・記号であれば英数字が現れるまでスキップしてからchars[r]と比較します。
2020.07.09 10:47
ITビギナーさん  
(No.3)
納得できました。
ありがとうございました。
2020.07.09 19:26

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop