forum.rastrnet.ru  

Вернуться   forum.rastrnet.ru > Компьютеры и всё, что с ними связано > Программируем

 Сообщения за день       Добавить альбом       Поиск      Правила форума  


Ответ
 
Опции темы Опции просмотра
Старый 01.10.2011, 19:53   #1
GreG
что бы тут написать?
 
Аватар для GreG
 
Регистрация: 18.04.2007
Сообщений: 93
По умолчанию Сортировка в Perl

только начал программировать на Perl, буквально недели две назад (изучаем по институтской методичке). задали задание: "дан массив имен и рост студентов. необходимо отсортировать и вывести по убыванию (по росту) этот список. я попробовал хэш массивом задать имена и значения роста, потом нашел простенький код сортировки и вставил в программу. но, как я понял, толком ничего не сортируется и вообще я не понимаю, как идет сортировка. просьба помочь кто в этом разбирается... если тут таковые есть.
Код:
#!/usr/bin/perl

my $i; # индекс в массиве
my $stud_name; # фамилия студента


# хеш-массив, в котором записаны сведения о росте студентов
my %rost = (
'Ivanov' => 176,
'Petrov' => 165,
'Sidorov' => 190,
'Razuvaev' => 186,
'Lebedev' => 174,
'Moroz' => 168,
'Vase4kin' => 182,
'Yudin' => 180
);

my @mas = sort by_rost keys %rost;
sub by_rost { $rost{$b} <=> $rost{$a} }

#my @mas = %rost;
#my @mas = sort by_rost values %rost;
#sub by_rost { $rost{$b} <=> $rost{$a} }

print "\nVivod hash-massiva\n";
# получить значения всех элементов хеш-массива можно так:
# ПРИМЕЧАНИЕ. В этом случае функция keys выбирает из
# хеш-массива значения всех ключей (т.е. фамилии
# студентов) и формирует из них массив,
# а конструкция foreach перебирает все элементы
# этого массива, присваивая поочередно их значения
# переменной $stud_name.
foreach $stud_name ( keys %rost )
{
print "Rost studenta $stud_name: $rost{ $stud_name }\n";
}
print "\nVivod hash-massiva s ispolzovaniem peremennoi \$_\n";
# получить значения всех элементов хеш-массива можно так:
# ПРИМЕЧАНИЕ. В этом случае функция keys выбирает
# из хеш-массива значения всех ключей
# (т.е. фамилии студентов) и формирует из них
# массив, а конструкция foreach перебирает все
# элементы этого массива, присваивая поочередно их
# значения "теневой" переменной $_.
foreach ( keys %rost )
{
# для сравнения на точное равенство числовых значений
# используется оператор "==", на неравенство: >, <, >=, <=
if ( $rost{ $_ } == 165 )
{
print "Student $_ imeet nizkui rost: $rost{ $_ }\n";
}
else
{
print "Student $_ imeet visokui rost: $rost{ $_ }\n";
}
}

sleep 20;

exit( 0 );
__________________
Как ты к человеку, так и он к тебе...
GreG вне форума   Ответить с цитированием
Старый 02.10.2011, 02:04   #2
TTЛ
Новичок
 
Аватар для TTЛ
 
Регистрация: 12.12.2007
Сообщений: 597
Отправить сообщение для TTЛ с помощью ICQ
По умолчанию

Могу сказать одно: мы учимся в одном институте на одном потоке. У меня задание было реализовать алгоритм вычитания в столбик - выполнил, сдал, для себя сделал заключение: Perl - никчемный язык.
TTЛ вне форума   Ответить с цитированием
Старый 03.10.2011, 17:06   #3
GreG
что бы тут написать?
 
Аватар для GreG
 
Регистрация: 18.04.2007
Сообщений: 93
Thumbs up

Цитата:
Сообщение от TTЛ Посмотреть сообщение
Могу сказать одно: мы учимся в одном институте на одном потоке.
с чего, вдруг, такое умозаключение?
кстати говоря, может кому пригодиться, мне тут помогли, вроде заработало)
Код:
#!/usr/bin/perl
 
use 5.8.8; use strict; use warnings;
 
my ($key);
 
my %rost = (
    'Ivanov' => 176,
    'Petrov' => 165,
    'Sidorov' => 190,
    'Razuvaev' => 186,
    'Lebedev' => 174,
    'Moroz' => 168,
    'Vase4kin' => 182,
    'Yudin' => 180
);
 
foreach $key ( sort { $rost{$b} <=> $rost{$a} } keys %rost ) {
    print "$key $rost{$key}\n";
}

sleep 20;
 
exit 0;
Цитата:
Сообщение от TTЛ Посмотреть сообщение
для себя сделал заключение: Perl - никчемный язык.
у меня одногруппник так чуть ли не сразу сказал) и кстати тоже пришел к этому выводу, когда задание взялся делать)
__________________
Как ты к человеку, так и он к тебе...
GreG вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
perl и MySQL на freebsd m`ax Программируем 3 04.09.2008 23:43


Текущее время: 03:25. Часовой пояс GMT +7.


Powered by vBulletin® Version 3.8.4 Patch Level 5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Форум открыт в июле 2004 г.
Кошки и котята Красноярска и Сибири Живой Мир Сибири