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

【返信投稿用フォーム】

お名前(10文字以内)

顔アイコン


本文(2,000文字以内)

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

プレビュー

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

投稿記事削除用フォーム

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

Pagetop