Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Skomopox on May 05, 2014, 03:19:25 AM
-
Привет Всем! Кто может поделиться идеями, как можно сравнить переменные, да ещё в несколько строчек (необязательный параметр :) ).
Конкретный пример: есть, допустим, 21 переменная, выраженные в числах. Каждый цикл они разные. Как сравнить, что 5 из этих 21 самые большие. Спасибо!
-
Как корявенький вариант предложу так:
вводишь 5 дополнительных переменных.
Присваиваешь первую сравниваемую переменную первой доп. переменной.
И далее цикл: если следующая сравниваемая переменная больше чем текущая доп. переменная, то присваиваешь ее значение доп. переменной.
Когда все переменные перебрал начинаешь новый цикл, только из него исключаешь переменную с максимальным значением.
И так далее.
Наверно не оч хорошо объяснил, но думаю идея понятна.
Возможно есть гораздо более красивый и правильный подход, но я хз как)
Так этот вариант наверно подойдет только для изначально известного количества переменных
-
$c1=2
$c2=0
$c3=-10
$c4=0
$c5=0
$c6=1
$c7=0
$c8=6
$c9=2
$c10=34
$string=STRCONCAT($c1,":",$c2,":",$c3,":",$c4,":",$c5,":",$c6,":",$c7,":",$c8,":",$c9,":",$c10)
SUB(max_opred)
$cut=$string
$max=0
WHILE(INT(STRPOS($cut,":"))!0)
$num=INT(STRCUT2($cut,1,STRPOS($cut,":")-1))
$cut=STRCUT2($cut,STRPOS($cut,":")+1,99999)
IF($num > $max)
$max=$num
END_IF
END_CYC
IF(INT($cut) > $max)
$max=INT($cut)
END_IF
IF(STRPOS($string,$max)=1)
$string=STRREPLACE($string, STRCONCAT($max,":"), "")
ELSE
$string=STRREPLACE($string, STRCONCAT(":",$max), "")
END_IF
END_SUB
max_opred()
$max1=$max
max_opred()
$max2=$max
max_opred()
$max3=$max
max_opred()
$max4=$max
max_opred()
$max5=$max
LOGWRITE ("max1= ",$max1,", max2= ",$max2,", max3= ",$max3,", max4= ",$max4,", max5= ",$max5)
HALT
-
А зачем строки? Массивы то уже есть. И хоть нет никаких функций работы с ними, всё равно, думаю быстрее будет.
-
А зачем строки? Массивы то уже есть. И хоть нет никаких функций работы с ними, всё равно, думаю быстрее будет.
Так это твой скрипт еще с 4.7 версии, можно переделать но возиться лень ;D
-
А зачем строки? Массивы то уже есть. И хоть нет никаких функций работы с ними, всё равно, думаю быстрее будет.
Так это твой скрипт еще с 4.7 версии, можно переделать но возиться лень ;D
Таааак... 1:1
А я кинулся искать и не нашел.
-
Таааак... 1:1
А я кинулся искать и не нашел.
http://crapware.aidf.org/forum/index.php?topic=187.msg1842#msg1842
-
Зетс. Я понял о чём ты. Я так и делаю, но оооочень геморно и длино.
Котэ спасибо за старый скрипт Игоря :) Я его попробовал сейчас, и почему-то одни нули выходят. Да не важно.
А вот предложение Игоря про массивы я бы рассмотрел :) Вычитывал про массивы здесь на форуме, что писал Джони, но видимо туговат я на подъём. Так и не понял что к чему. Но вот думал, что именно с ними как-то можно в "две строки" :) написать скрипт на сравнение. Если будет желание у кого, с интересом посмотрю :)
Чтобы если конкретней - то что мне подходит, например в старом скрипте Игоря, то что, как я понял, он должен просто показывать 5 максимальных переменных. А мне бы хотелось... ну как хотелось?! :) надо так... по сценарию... что происходит считывание переменной, и если она является одной из пяти, то происходит, такое-то действие, если нет, то идёт к следующей переменной и т.д. Как-то так. Спасибо :)
-
Опять не понятно. Почему такая привязка к одной переменной? почему нельзя переназначить другим и сравнивать уже их?
Может ты при объяснении упустил одну вещь понятную тебе, но не ясную другим.
Массивами в две строки не получится. По крайней мере пока. Нет функционала. Пока массивы введены в основном как хранилища координат для введения новых функций. Никаких команд обработки массивов: сортировки, вставки, удаления - нет. Только по индексу или в конец. Всё конечно можно реализовать и вручную, но "парой строк" это уже не обойдётся.
-
Ну, парой строк - это было в кавычках. Необязательно парой строк :) И в принципе, необязательна привязка к одной переменной. Просто хотел, как проще :)
-
...Я его попробовал сейчас, и почему-то одни нули выходят. ...
Я сейчас попробовал, всё нормально. И на 4.9 и на 4.10
...надо так... по сценарию... что происходит считывание переменной, и если она является одной из пяти, то происходит, такое-то действие, если нет, то идёт к следующей переменной и т.д. ...
А проблема то в чём? Определяешь кодом выше максимальные. Потом в своём цикле считываешь/перебираешь переменные и сравниваешь с максимумами :)
IF(($var = $max1) | ($var = $max2) | ($var = $max3) | ($var = $max4) | ($var = $max5))
// $var одна из 5 максимальных
// делаем что нужно
ELSE
// $var не входит в максимум
END_IF