• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perlでカレンダーを作っているのですが、祝日の表示が上手くいきません)

Perlでカレンダー作成中に祝日の表示が上手くいかない

このQ&Aのポイント
  • Perlでカレンダーを作成している際に、祝日の表示がうまくいきません。特に祝日の日の数字を赤で表示させる方法についてアドバイスを求めています。
  • 現在は一月のみのテストを行っています。リストを用意し、カレンダーの数字を表示する前に特定の日を判定して色を変えるように処理しようとしていますが、最後の日にち以外は正しく色が変わりません。
  • 問題の原因や解決策についてアドバイスをいただきたいです。随時補足情報を提供します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kalze
  • ベストアンサー率47% (522/1092)
回答No.2

if($mk1[$c] == $a) { $kyu[$a-1] = 1;} ↓ if($mk1[$c] == $a) { $kyu[$a-1] = 1; last;} リストにマッチした時点で休日かどうかの判定ループからやめないと、その後のとは一致しないので、上書きされます。 つまり$c=1のときに確かに$mk1[$c]==$aが真となり$kyu[$a-1]=1としているのですが、その後も判定を続けるため、mk1リストの最後とは$mk1[$c]==$aが偽となってしまうため、せっかく前に判定して入れておいた1が0で上書きされてしまうと。

kyonmimi
質問者

お礼

kalzeさん、ご指摘通りlast;を加えたら上手くいきました。 どうもありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

>考え方が、どこかおかしいのでしょうか? 間違っている処は、 else {$kyu[$a-1] = 0;} の部分です。 $cが変化してifの条件に合わない場合があってその時に0にしたら、おかしいでしょう? 色々修正の仕方はあると思いますが、 for(my $a = 1; $a <= 31; $a++) { $kyu[$a-1] = 0; for(my $c = 0; $c < @mk1; $c++) { if($mk1[$c] == $a) { $kyu[$a-1] = 1; } } } とすればいいと思います。

kyonmimi
質問者

お礼

BLUEPIXYさん、ありがとうございました。

関連するQ&A

専門家に質問してみよう