HOME»基本情報技術者試験掲示板»平成29年秋期試験  午後問9
投稿する

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

 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日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop