Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Vlas on September 25, 2022, 08:53:07 PM

Title: относительно ARRSORT
Post by: Vlas on September 25, 2022, 08:53:07 PM
Здравствуйте, Гуру.
необходимо было отсортировать данные в массиве. получил не верный результат. сходил за хелпом и прогнал код оттуда, только изменил до 25 значений. в результате (см. вложение) получил не верный результат, похоже массив сортируется по знакоместу, а не по значению.
вопрос: как отсортировать по полному значению?

ППЦ: файл разрешённого размера не прикрепляется, пишет папка аплод переполнена.
Title: Re: относительно ARRSORT
Post by: Vlas on September 25, 2022, 08:54:25 PM
собственно лог:

22:29:48 18
22:29:48 34
22:29:48 66
22:29:48 15
22:29:48 11
22:29:48 28
22:29:48 48
22:29:48 41
22:29:48 45
22:29:48 52
22:29:48 92
22:29:48 50
22:29:48 29
22:29:48 70
22:29:48 66
22:29:48 80
22:29:48 3
22:29:48 66
22:29:48 9
22:29:48 35
22:29:48 47
22:29:48 22
22:29:48 50
22:29:48 77
22:29:48 90
22:29:48 sort:
22:29:48 11
22:29:48 15
22:29:48 18
22:29:48 22
22:29:48 28
22:29:48 29
22:29:48 3
22:29:48 34
22:29:48 35
22:29:48 41
22:29:48 45
22:29:48 47
22:29:48 48
22:29:48 50
22:29:48 50
22:29:48 52
22:29:48 66
22:29:48 66
22:29:48 66
22:29:48 70
22:29:48 77
22:29:48 80
22:29:48 9
22:29:48 90
22:29:48 92
Title: Re: Всё относительно
Post by: kiril on September 25, 2022, 10:47:19 PM
код где? :o
Title: Re: относительность - она такая......
Post by: kiril on September 25, 2022, 10:54:31 PM
вопрос: как отсортировать по полному значению?.
Функция INT. Принудительно возвращает число. Ваш массив воспринимается, как строки.
Title: Re: относительно ARRSORT
Post by: Vlas on September 25, 2022, 11:26:09 PM
код из хелпа, только увеличил ряд до 25.
Вот:

// генерация массива
for($a=0, $a<25)
   $var[$a] = rnd(0,100)
   print($var[$a]);
end_cyc

// сортировка
arrsort($var)
print("sort:")

// вывод результата
for($a=0, $a<25)
   print($var[$a]);
end_cyc

halt



Title: Re: относительность - она такая......
Post by: Vlas on September 25, 2022, 11:45:06 PM
вопрос: как отсортировать по полному значению?.
Функция INT. Принудительно возвращает число. Ваш массив воспринимается, как строки.
а делать то что? как мне int прикрутить к моему массиву?

INT
Функция. Возвращает целую часть числа без округления. Принудительно возвращает число.

не понимаю связь int и создаваемого массива, мне округления не нужны и массив в принципе не содержит дробных чисел. а в каком месте надо прогнать массив через int чтобы он стал целочисленным и не стал опять строчным? мне с ним еще работать как с числами...
Title: Re: относительно ARRSORT
Post by: Vint on September 26, 2022, 09:01:20 AM
необходимо было отсортировать данные в массиве. получил не верный результат. сходил за хелпом и прогнал код оттуда, только изменил до 25 значений. в результате (см. вложение) получил не верный результат, похоже массив сортируется по знакоместу, а не по значению.
вопрос: как отсортировать по полному значению?
http://crapware.aidf.org/forum/index.php?topic=356.msg31199#msg31199
раздел "Исправления".

Короче исправлено с версии v4.14.001b. Лучше, конечно, использовать v4.14.003b. Ну или сортировать самому, любым базовым алгоритмом, можно начать с сортировки пузырьком  ;D
В кликере всё сделано для начинающих  :D чтоб алгоритмы мимо них не прошли.
Title: Re: относительно ARRSORT
Post by: Vlas on September 26, 2022, 10:56:01 PM
ясно) теперь логика вернулась в мою голову) пока продолжу на "старой" версии ибо привычно)
надеялся одной командой обойтись, но уже сам отсортировал самописным циклом)))
спасибо за ответ  :D
Title: Re: относительно ARRSORT
Post by: 4.У.В.@.К on September 27, 2022, 07:14:14 PM
Привет!
Нули нужно дописать к сортируемым цифрам слева, до нужной разрядности, тогда всё нормально сортируется. Обсуждалось уже подобное. Так будет работать быстрее. Костыль конечно, но более изящный, чем самописный цикл. :)

Code: (clickermann) [Select]
LOGCLEAR

// генерация массива
for($a=0, $a<25)
   $var[$a] = STRCONCAT("00", rnd(0,100))
   $var[$a] = STRCUT2($var[$a], STRLEN($var[$a])-2, STRLEN($var[$a]))
   print($var[$a])
end_cyc

// сортировка
arrsort($var)
print("sort:")

// вывод результата
for($a=0, $a<25)
   print($var[$a]*1) // или print(INT($var[$a]))
end_cyc

halt