Author Topic: относительно ARRSORT  (Read 4038 times)

0 Members and 1 Guest are viewing this topic.

Vlas

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
относительно ARRSORT
« on: September 25, 2022, 08:53:07 PM »
Здравствуйте, Гуру.
необходимо было отсортировать данные в массиве. получил не верный результат. сходил за хелпом и прогнал код оттуда, только изменил до 25 значений. в результате (см. вложение) получил не верный результат, похоже массив сортируется по знакоместу, а не по значению.
вопрос: как отсортировать по полному значению?

ППЦ: файл разрешённого размера не прикрепляется, пишет папка аплод переполнена.

Vlas

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: относительно ARRSORT
« Reply #1 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

kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: Всё относительно
« Reply #2 on: September 25, 2022, 10:47:19 PM »
код где? :o

kiril

  • Активный участник
  • ***
  • Posts: 106
    • View Profile
Re: относительность - она такая......
« Reply #3 on: September 25, 2022, 10:54:31 PM »
вопрос: как отсортировать по полному значению?.
Функция INT. Принудительно возвращает число. Ваш массив воспринимается, как строки.

Vlas

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: относительно ARRSORT
« Reply #4 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




Vlas

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: относительность - она такая......
« Reply #5 on: September 25, 2022, 11:45:06 PM »
вопрос: как отсортировать по полному значению?.
Функция INT. Принудительно возвращает число. Ваш массив воспринимается, как строки.
а делать то что? как мне int прикрутить к моему массиву?

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

не понимаю связь int и создаваемого массива, мне округления не нужны и массив в принципе не содержит дробных чисел. а в каком месте надо прогнать массив через int чтобы он стал целочисленным и не стал опять строчным? мне с ним еще работать как с числами...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: относительно ARRSORT
« Reply #6 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 чтоб алгоритмы мимо них не прошли.
« Last Edit: September 26, 2022, 09:03:27 AM by Vint »


Vlas

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: относительно ARRSORT
« Reply #7 on: September 26, 2022, 10:56:01 PM »
ясно) теперь логика вернулась в мою голову) пока продолжу на "старой" версии ибо привычно)
надеялся одной командой обойтись, но уже сам отсортировал самописным циклом)))
спасибо за ответ  :D

4.У.В.@.К

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Re: относительно ARRSORT
« Reply #8 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