dzgn: jr*

 

November 04, 2004

Задачи 2: Списъци, хешове, цикли, условни конструкции

Ето и вторият комплект задачи към лекции 3, 4 и 5 - някои от тях ще разгледаме на упражнението в понеделник. Ако четете това на главната страница на сайта, изберете "Още от..." по-долу, за да видите самите задачи.

Както и при първия комплект, в задачите, където е дадено началото на програмата и там са дефинирани променливи и са им дадени стойности, целта е да допишете програмата така, че тя да работи правилно дори и след като променим тези стойности.

Зад. 1 - Числа

#!/usr/bin/perl

@numbers = (1, -4, 2, 8, -5, -7, 25, 12, -103);

Да се довърши горната програма така, че да извежда на един ред, разделени със запетаи числата от масива @numbers, които:

а) са положителни;

б) са отрицателни;

в) не дават остатък 2 при делене на 3;

г) първо положителните в реда, в който са в масива, а след тях - отрицателните в ред, обратен на този, в който са изредени в масива.

Зад. 2 - Напред-назад...

#!/usr/bin/perl

@words = qw/mumble frotz bob tenet ant tna rotator elbmum sirius suiris noon ztorf/;

Да се довърши горната програма така, че да извежда на един ред, разделени със запетаи, тези думи от масива @words, които:

а) съвпадат с резултата от обръщането си отзад напред (палиндроми);

б) съвпадат с резултата от обръщането на предходната дума;

в) съвпадат с резултата от обръщането на която и да е от предходните думи.

Зад. 3 - Прости числа

#!/usr/bin/perl

sub read_line()
{
    return <>;
}

Дадена е функцията read_line(), която не приема параметри, чете един ред от стандартния вход и връща като резултат прочетения ред в случай на успех (запазвайки символа за нов ред накрая) и недефинираната стойност в случай на неуспех. Да се напише програма, която третира всеки прочетен ред като число и извежда 'Yes', ако то е неотрицателно и просто, а в противен случай не извежда нищо.

Зад. 4 - Оценки

Използвайки функцията read_line() от задача 3, напишете програма, която чете от стандартния вход информация за оценките на студенти и извежда за всеки от тях факултетния му номер, средното аритметично на всичките му оценки с точност до два знака, закръглено надолу, и името на курса, по който студентът е получил най-високата си оценка. Ако има няколко курса с една и съща оценка, да бъде изведено името на първия срещнат във входните данни. Изходните данни трябва да бъдат подредени по нарастващ ред на факултетните номера.

Информацията за студентите ще бъде подадена във вида:

40001 6 Практическо програмиране с Perl
40010 5 Дискретна математика
40003 5 Практическо програмиране с Perl
40001 3 Мрежова сигурност
40003 4 Изкуствен интелект
40002 6 Компютърна графика
40001 6 Програмиране с .NET Framework

Резултатът от програмата трябва да изглежда така:

40001 5.00 Практическо програмиране с Perl
40002 6.00 Компютърна графика
40003 4.50 Практическо програмиране с Perl
40010 5.00 Дискретна математика
Публикувано от roam на November 4, 2004 05:15 PM
"I can only bend the rules so much before it starts looking like I'm breaking the rules." ( Larry Wall )
Задвижвано от
Movable Type 2.65

Най-добре се вижда с Firefox в 1024х768 или повече.