--- processmail/collection.pl 2013/10/11 15:39:35 3.2 +++ processmail/collection.pl 2013/10/30 19:28:30 3.3 @@ -1,6 +1,6 @@ #!/usr/bin/perl # -#$Id: collection.pl,v 3.2 2013/10/11 15:39:35 boris Exp $ +#$Id: collection.pl,v 3.3 2013/10/30 19:28:30 boris Exp $ # # Собрание сочинений # @@ -19,15 +19,20 @@ $DEBUG=$opt_d; $SHORT=$opt_s; $MEDIUM=$opt_m; -# Находим максимальный вопрос -$MAXQUEST=1; -for (my $i=1; $i<=$ROUNDS; $i++) { - if ($MAXQUEST<$MAXQUEST[$i]) { - $MAXQUEST=$MAXQUEST[$i]; +# Находим максимальный и минимальный вопрос и слегка подстраховываемся. +$MINQUEST=1e99; +$MAXQUEST=-1; +for (my $r=1; $r<=$ROUNDS; $r++) { + if ($MINQUEST>$MINQUEST[$r]) { + $MINQUEST=$MINQUEST[$r]; + } + if ($MAXQUEST<$MAXQUEST[$r]) { + $MAXQUEST=$MAXQUEST[$r]; } } - - +if ($MINQUEST < 0 || $MAXQUEST < 0) { + die "Отрицательные номера вопросов не поддерживаются!\n"; +} my %teams; my @answers; @@ -44,8 +49,8 @@ if ($opt_t) # # Читаем ответы команд # -for (my $i=1; $i<=$ROUNDS; $i++) { - foreach my $file ( @{$FILES[$i]} ) { +for (my $r=1; $r<=$ROUNDS; $r++) { + foreach my $file ( @{$FILES[$r]} ) { open (INFILE, $file); readmail(\%teams); collect_answers(\%teams,\@answers); @@ -61,7 +66,7 @@ if ($opt_o) die "Cannot open $opt_o\n" unless open(OUTFILE,">$opt_o"); select OUTFILE; } -for ($i=1;$i<=$MAXQUEST;$i++) +for ($i=$MINQUEST;$i<=$MAXQUEST;$i++) { print "\nВОПРОС $i:\n"; if ( ! $SHORT || countanswers(\%teams,\@answers,$i,'+') ) {