2

次の例で@DAYSは、 は月の日であり、 のエントリは のエントリに@DAYS_SINCE_RAIN対応しています@DAYS。たとえば、$DAYS_SINCE_RAIN[4]は に最後に雨が降ってからの日数$DAYS[4]です。

では@DAYS_SINCE_RAIN、雨が降った日の値は 0 になります。0 が表示される最後のインスタンスが必要です。

#iii. Find the last day of rain in April 2013.
print "#iii. Find the last day of rain in April 2013.\n";
$i=0;
@getday=();

while(@DAYS_SINCE_RAIN[$i]=~ m/0/){
    push @getday, @DAY[$i];
    $i++; 
    if($i=$#DAYS_SINCE_RAIN){
        last;
    }
};

print "@DAYS_SINCE_RAIN";
print "\n day of last rain: @getday[$i] ";

値が保存されていないようです:(

4

1 に答える 1

5

ここでは、比較ではなく代入演算子を使用しています。

if($i=$#DAYS_SINCE_RAIN){

を に変更===ます。

これに加えて、ループ:

while(@DAYS_SINCE_RAIN[$i]=~ m/0/){

初日は雨が降らずに出発。少し異なるアプローチを取り、最後から始めて戻って作業することもできます。

my $i = $#DAYS_SINCE_RAIN;

while ($i >= 0) {
    last if $DAYS_SINCE_RAIN[$i] == 0;
    $i--;
}

print "\n day of last rain: $DAYS[$i] ";
于 2013-09-26T14:31:14.313 に答える