平成29年秋期試験 午後問9
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文は記号や空白のフィルタリング目的と考えてよいのでしょうか。
よろしくお願いします。
以前、解き直しで納得していたと思ってたのですが、再度見直しで躓いてしまいました。
[プログラム] 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]と比較します。
chars[l]が英数字であれば次の文字に進める必要はないので、while 内を実行せずそのままchars[r]と比較し、chars[l]が空白・記号であれば英数字が現れるまでスキップしてからchars[r]と比較します。
2020.07.09 10:47
ITビギナーさん
(No.3)
納得できました。
ありがとうございました。
ありがとうございました。
2020.07.09 19:26
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告