[Cppcourse] Результаты тестирования по С++

Dmitry Irtegov fat at nsu.ru
Sun Sep 16 18:10:10 NOVST 2007


Господа и дамы!
Поздравляю вас с успешным прохождением тестирования.  Вы приняты для 
прохождения факультативного спецкурса "Программирование на С++"
в осеннем семестре 2007 года.  Просьба прислать на 
cppcourse at swsoft.nsu.ru информацию о своем расписании в следующем формате:
pupkin at gorodok.net
Понедельник
Вторник 9:00-17:45
Среда   12:30-14:15
Четверг 9:00-14:15,16:00-17:45
Пятница 9:00-17:45
Суббота 10:45-14:15

Запись Вторник 12:30-14:15 означает, что вас устраивают в качестве 
времени проведения занятий пары, начинающиеся в 12:30 и 14:15 по вторникам.
Просьба указывать как можно больше интервалов, т.е. если у вас есть 
какие-то еженедельные дела, которые вы можете перенести, лучше укажите 
это время.
Практика показывает, что подобрать устраивающее всех время очень сложно.

Для проверки синтаксиса вашего расписания (и для уточнения синтаксиса) 
прилагается программа на Perl, которой все это будет обрабатываться (о 
перекодировке входных данных в КОИ-8 я позабочусь).
Заранее спасибо,

Д.В.

-------------- next part --------------
#!/usr/bin/perl

# parse file

$i=0;

@dayname=("Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"); 
my (%schedule);

while(<>) {
    #parse name
    $name=$_;
    $name =~ s/^\s+//;
    $name =~ s/\s+$//;
    $name =~ s/\r$//;
    $name =~ s/\s+$//;
    $nameindex{$name} = $i;
    #parse days
    $daysched="";
    for ($j=0; $j<6; $j++) {
	$line=<>;
	($head, $rest) = split(' ', $line);
	die "syntax error, wrong day name $head" unless $head==$dayname[j];
	$rest =~ s/^\s+//;
	$rest =~ s/\s+$//;
	next if $rest=="";
	$rest=~ s/9:00-10:45/9:00,10:45/;
	$rest=~ s/9:00-/9:00,10:45-/;
	$rest=~ s/10:45-12:30/10:45,12:30/;
	$rest=~ s/10:45-/10:45,12:30-/;
	$rest=~ s/12:30-14:15/12:30,14:15/;
	$rest=~ s/12:30-/12:30,14:15-/;
	$rest=~ s/14:15-16:00/14:15,16:00/;
	$rest=~ s/14:15-/14:15,16:00-/;
	$rest=~ s/16:00-17:45/16:00,17:45/;
	$rest=~ s/16:00-19:20/16:00,17:45,19:20/;
	$rest=~ s/16:00-/16:00,17:45-/;
	$rest=~ s/17:45-19:20/17:45,19:20/;
#	print $j.$rest."\n";
	for my $pair (split(/,/,$rest)) {
	    $daysched.=$j.':'.$pair.' ';
	}
#	print $daysched."\n";
    }
    $schedule{$name}=$daysched;
}

#for my $name (keys(%schedule)) {
#    print "$name schedule is $schedule{$name}\n";
#}

#die "Debug\n";

for($i=0; $i<6; $i++) {
    for my $pair ("9:00", "10:45", "12:30", "14:15", "16:00", "17:45", "19:20") {
	$count=0;
	$testpair=$i.':'.$pair;
	$cannotattend="";
	for my $name (keys(%schedule)) {
	    if (index($schedule{$name},$testpair)<0) {
		$count++;
		$cannotattend.=" $name";
	    }
	}
	print "$count people cannot attend at $dayname[$i], $pair: $cannotattend\n";
    }
}


More information about the Cppcourse mailing list