Forum Webscript.Ru
Программирование => Perl => Тема начата: z3f от 06 Апреля 2004, 15:55:45
-
Обрадовался когда увидел что в Перле есть встроенная функция сортировки - sort.
Делаю:
@arrnew=sort @arrold;
@arrold - одномерный массив из чисел (пример - 2 8 4 1 6 9 3 9)
Требуется отсортировать по возрастанию.
Использовать что либо типа метода выбора или пузырьком не хочется (медленно).
Хочется встроенную функцию сортировки нормально работающую.
Как правильно использовать функцию sort???
С уважением z3f.
-
Да забыл - пробовал так:
@arrnew= sort {1 cmp 100} @arrold;
Вообще бред получается!
@arrold = 2 8 3 4
отсортированный @arrnew = 4 2 8 3.
По какому принципу эта функция вообще сортирует???
С уважением z3f.
-
[root@linux-srv mazur]# perl -de0
Loading DB routines from perl5db.pl version 1.19
Editor support available.
Enter h or `h h\' for help, or `man perldebug\' for more help.
main::(-e:1): 0
DB<1> @m = qw(2 8 4 1 6 9 3 9)
DB<2> print foreach @m
28416939
DB<3> print foreach sort @m
12346899
DB<4> @s = sort @m
DB<5> print foreach @s
12346899
DB<6> print foreach @m
28416939
а далее perldoc -q sort
-
Мдям=(((
я же так все и делал вообщето....
но получается то другое совсем!!!!
потому и спросил про принцип действия функции sort!!!!
Скрипт:
my @s;
my @m;
@m = @activ;
print foreach "@m \\n";
print foreach sort "@m \\n";
@s = sort @m;
print foreach "@s \\n";
print foreach "@m \\n";
Ответ скрипта - 1 8 4 5
1 8 4 5
То есть уперто не сортирует!!!!
В чем ошибка то??? Может я както не правильно что-то чему-то присваиваю???? может действие @m=@activ в корне неправильное???
Неужели никто в скрипте не сортировал???
С уважением z3f.
ЗЫ - perldoc -q sort - внимательно прочитал - эффекта не дало=)
-
z3f:
my @s;
my @m;
@m = @activ;
print foreach "@m \\n";
print foreach sort "@m \\n";
@s = sort @m;
print foreach "@s \\n";
print foreach "@m \\n";
Разберись вначале с расстановкой кавычек... Все сортируется.
-
@list = sort { $a <=> $b } @list;
Тоже эффекта не дало?
-
Это ты на каком языке написал?
#!/usr/bin/perl
use strict;
my @s;
print "Default:\\n";
my @m = qw(1 8 4 5);
print "$_\\n" foreach @m;
print "="x10;
print "\\n";
print "Default sorted:\\n";
print "$_\\n" foreach sort @m;
@s = sort @m;
print "="x10;
print "\\n";
print "Default sorted II:\\n";
print "$_\\n" foreach @s;
print "="x10;
print "\\n";
print "Default unsorted II:\\n";
print "$_\\n" foreach @m;
z3f:
ЗЫ - perldoc -q sort - внимательно прочитал - эффекта не дало=)
Я вижу что не дало...
-
Chs передо мной лежит учебник по перлу и если бы книжная истина пошла - я бы не обращался на форум... извини...
NeoNox
мой скрипт полностью приводить не буду - здоровый он и бестолковый ко всему прочему=)
#!/usr/bin/perl
use strict;
use CGI \':standard\';
my @s;
my @activ;
# после этого @activ забивается данными и он адназначна=) на пуст и не имеет пустых значений
@s = sort @activ;
print "Сортированный -- \\n";
print "$_ \\n" foreach @s;
print "Не сортированный -- \\n";
print "$_ \\n" foreach @activ;
По-моему я правльно воспользовался copy-paste=)
Или неправльно???
Потому что ответ - Сортированный -- 1 9 3 Не сортированный -- 1 9 3
Я просто не знаю - в чем проблема?
Посмотрите на мой скрипт еще раз пожалуйста!!!
ЗЫ - сервер FreeBSD 4.7 -- perl - вчера выкачал и поставил -- apache - месяц назад ставил... все - рабочее... может здесь проблема?
-
z3f:
# после этого @activ забивается данными и он адназначна=) на пуст и не имеет пустых значений
вот это ты заказчику покажи а нам не нужно.
даже слепому станет ясно что у тебя вот здесь проблема.
ты можеш вывести элементы этого масива и посмотреть что в нем не так?
второе, ты код который я выложил постом раньше запускал? и что?
-
NeoNox
Десйствительно - я неправильно забиваю массив. Проверил.
Проблема - действительно в моей голове.
вы правы.
Вопрос другой - корректно ли черз HTML-форму передается массив? Одно значение я могу передать, а вот целый массив передается через HTML форму в поле hidden или нет???
С уважением z3f.
-
через форму ты передаеш значения а масивом они становятся в твоей программе.
опиши задачу подробнее
-
Задача достаточно простая - я работу в колледже и решил написать небольшую программку для тестов... ессесно хотелось бы что бы она была что называется сервер-сайд. потому и решил что лучше всего ее сделать на перле что бы на си не возится с БД...
Есть тетсовое задание - Определить порядок действий - то етсь расставить по порядку действия. и вот делаю дружественный интерфейс. все оформляется с помощью рабиобуттонов и каждый раз отсылается на сервер. если выбираешь радиобуттон - закончить работу - вываливается новый вопрос. и так далее до последнего вопроса...
проблема была в следующем - не хотелось высвечивать радиобуттон еслиего уже выбрали. поэтому нужно было упорядочить по порядку вопросы. вот и столкнулся с проблемой.
она кстати решена - спасибо за подсказку по проверки правильности заполнения массива!
С уважением z3f.