File:  [Local Repository] / processmail / createtable.pl
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Mon Feb 4 15:44:51 2002 UTC (22 years, 5 months ago) by boris
Initial revision

    1: #!/usr/local/bin/perl
    2: #$Id: createtable.pl,v 1.1 2002/02/04 15:44:51 boris Exp $
    3: #
    4: #
    5: #
    6: # Исходные файлы и параметры
    7: #
    8: 
    9:     use Getopt::Std; 
   10: 
   11: $usage = 'createtable.pl $Revision: 1.1 $, $Date: 2002/02/04 15:44:51 $'. "\n".
   12: "Usage: createtable.pl [-d] [-t answers_file] [-m mail_file]  [-o results] \n";
   13: 
   14: require 'parameters.pl';
   15: require 'subroutines.pl';
   16: 
   17: die $usage unless getopts('t:m:o:d');
   18: 
   19: $DEBUG=$opt_d;
   20: 
   21: my %teams;
   22: my @answers;
   23: my @ratings;
   24: #
   25: # Читаем старые результаты
   26: #
   27: if ($opt_t)
   28: {
   29:     die "Cannot open $opt_t\n" unless open(INFILE,$opt_t);
   30:     readhash(\@answers);
   31:     close(INFILE);
   32: }
   33: 
   34: #
   35: # Читаем ответы команд
   36: #
   37: if ($opt_m)
   38: {
   39:     die "Cannot open $opt_m\n" unless open(INFILE,$opt_m)
   40: }
   41: else
   42: {
   43:     *INFILE=*STDIN;
   44: }
   45: readmail(\%teams);
   46: close(INFILE);
   47: #
   48: # Чистим хэш %answers
   49: #
   50: collect_answers(\%teams,\@answers);
   51: #
   52: # Подсчитываем рейтинги вопросов
   53: #
   54: rate_questions(\%teams,\@answers,\@ratings);
   55: #
   56: # Вычисляем число ответов и рейтинги команд
   57: #
   58: find_scores(\%teams,\@answers,\@ratings);
   59: #
   60: # Ну а теперь печатаем саму таблицу...
   61: #
   62: if ($opt_o)
   63: { 
   64:     die "Cannot open $opt_o\n" unless open(OUTFILE,">$opt_o");
   65:     select OUTFILE;
   66: }
   67: #
   68: # Печатаем заголовок
   69: #
   70: printf "%5s", "N";
   71: for ($i=1;$i<=$MAXQUEST;$i++)
   72: {
   73:     printf "%3d",$i;
   74: }
   75: printf "%3s","О";
   76: printf "%4s","Р";
   77: printf " КОМАНДА";
   78: print "\n";
   79: #
   80: # Печатаем команды построчно
   81: #
   82: foreach $team (sort 
   83: 	        {
   84: 		    $teams{$b}->{score} <=> $teams{$a}->{score}
   85: 		    or
   86: 			$teams{$b}->{rating} <=> $teams{$a}->{rating}
   87: 		} keys %teams
   88: 	       )
   89: {
   90:     printf "%5d",$teams{$team}->{regnum};
   91:     for ($i=1;$i<=$MAXQUEST;$i++)
   92:     {
   93: 	my $answer = $teams{$team}->{answers}[$i];
   94: 	my $score = $answers[$i]->{$answer}->{score};
   95: 	$score = '-' unless $score;
   96: 	    printf "%3s", $score;
   97:     }
   98:     printf "%3s",$teams{$team}->{score};
   99:     printf "%4s",$teams{$team}->{rating};
  100:     print " $team";
  101:     print "\n";
  102: }
  103: #
  104: # Печатаем последнюю строку таблицы
  105: # в ней рейтинги вопросов
  106: #
  107: printf "%5s", "Р";
  108: for ($i=1; $i<=$MAXQUEST;$i++)
  109: {
  110:         printf "%3s", $ratings[$i];
  111: }
  112: print "\n";
  113: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>