Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: MIG29 on August 14, 2013, 03:26:00 PM
-
$cena = strreadln("1.txt",1)
$ves = strreadln("1.txt",2)
$cena = inputbox("Юаней?",$cena,60)
$ves = inputbox("ВЕС?",$ves,60)
strwriteln("1.txt",$cena,1)
strwriteln("1.txt",$ves)
$ves = $ves/10
//dollar/grn
$dolar = 8
$dol_kg = 20*$ves//доставка за 1 кг
$postavshik = 2//услуги поставщика
$real_cena = $cena*0.16+$postavshik
$real_cena = $real_cena/10+$real_cena
$real_cena = $real_cena+$dol_kg
$real_cena = $real_cena*1.5*$dolar//накрутка
$real_cena = round($real_cena,0)
//длина строки
$length = strlen($real_cena)
print("$real_cena","-",$real_cena)
print("$length","-",$length)
//без последней
$length_first = $length - 1
$first = strcut2($real_cena,1,$length_first)
print("$first","-",$first)
//последняя
$last = strcut($real_cena,$length,1)
print("$last","-",$last)
if(($last > 2.5)&($last<7.5))
$last = 5
else
//Ошибка где то в этом месте, переменная Last больше 2.5 и меньше чем 7.5, но ведёт себя как будто она только болье чем 7.5!!!!!!!!
if($last > 7.5)
inc($first)
$last = 0
else
$last = 0
end_if
end_if
print("$first","-",$first)
print("$last","-",$last)
$real_cena = strconcat($first,$last)
print("$real_cena","-",$real_cena)
hintpopup("---",$real_cena)
toclip($real_cena)
print($real_cena)
print("---------")
halt
-
$last = strcut($real_cena,$length,1)
print("$last","-",$last)
if(($last > 2.5)&($last<7.5))
$last = 5
else
//Ошибка где то в этом месте, переменная Last больше 2.5 и меньше чем 7.5, но ведёт себя как будто она только болье чем 7.5!!!!!!!!
if($last > 7.5)
//...
Ошибка в том, что переменная $last у тебя после strcut($real_cena,$length,1) строковая.
И сравнение её с числом if(($last > 2.5)&($last<7.5)) не проходит. Условие просто пропускается.
Переведи $last в число при её определении, можно так:
$last = round(strcut($real_cena,$length,1),-1)
Зачем в этом месте связываться со строковыми переменными?
//длина строки
$length = strlen($real_cena)
print("$real_cena","-",$real_cena)
print("$length","-",$length)
//без последней
$length_first = $length - 1
$first = strcut2($real_cena,1,$length_first)
print("$first","-",$first)
нельзя просто
$first=INT($real_cena/10)
В последней версии в выводе в лог нельзя писать символ $
print("$last","-",$last)
-
Строки нужны чтобы отделить последнюю цифру и округлить до 0 или до 5.
Строковые переменные мне нужны только для этого, я не знаю как их перводить из чисел в строки и наоборот.
пример:
231.235 грн = 230 грн
123.742 грн = 125 грн
436.534 грн = 435 грн
268.542 грн = 270 грн
-
Я написал как перевести.
Строки не нужны.
$ostatok=$real_cena-round($real_cena,1)
if(($ostatok>2.5)&($ostatok<7.5))
$cena=round($real_cena,1)+5
ELSE
if($ostatok>7.4))
$cena=round($real_cena,1)+10
ELSE
$cena=round($real_cena,1)
END_IF
END_IF
LOGWRITE("cena = ",$cena)
...
если где-то накосячил, прошу прощения. Пишу с телефона.
-
наверно даже правильней вместо
round($real_cena,1)
писать
(INT($real_cena/10))*10
-
Я написал как перевести.
Строки не нужны.
$ostatok=$real_cena-round($real_cena,1)
...
Я понял идею, ПАСИБА))
-
Vint!
$cena = strreadln("1.txt",1)
$ves = strreadln("1.txt",2)
$cena = inputbox("Юаней?",$cena,60)
$ves = inputbox("ВЕС?",$ves,60)
strwriteln("1.txt",$cena,1)
strwriteln("1.txt",$ves)
$ves = $ves/10
//dollar/grn
$dolar = 8
$dol_kg = 20*$ves//доставка за 1 кг
$postavshik = 2//услуги поставщика
$real_cena = $cena*0.16+$postavshik
$real_cena = $real_cena/10+$real_cena
$real_cena = $real_cena+$dol_kg
$real_cena = $real_cena*1.5*$dolar//накрутка
//цена без последней цифры
$round_cena = int($real_cena/10)*10
$ostatok = $real_cena - $round_cena
print("real_cena_before","-",$real_cena)
print("round_cena","-",$round_cena)
print("ostatok_before","-",$ostatok)
//$ostatok = round($ostatok,-3)
//print("round_ostatok","-",$ostatok)
!!!!!!!!!!!!!!!!!!!!!!!!!
Та же самая песня! какое число не содержит переменная "остаток" , она всегда больше 2.5 и меньше 7.5, и превращается в 5....
!!!!!!!!!!!!!!!!!!!!!!!!!
if($ostatok < 2.5)
$ostatok = 0
else
if($ostatok > 7.5)
$ostatok = 10
else
$ostatok = 5
end_if
end_if
print("ostatok","-",$ostatok)
$real_cena = $round_cena + $ostatok
print("$real_cena","-",$real_cena)
hintpopup("---",$real_cena)
toclip($real_cena)
print($real_cena)
print("---------")
halt
-
У меня Clickermann 4.7 winXP
-
Не знаю что там у тебя получается. Вот пример... В сабе нужный тебе кусок
LOGCLEAR
$real_cena=0
WHILE($real_cena<20)
GOSUB(sub_name)
$real_cena=$real_cena+0.3
END_CYC
HALT
SUB(sub_name)
$ostatok=$real_cena-(INT($real_cena/10))*10
if(($ostatok>2.5)&($ostatok<7.5))
$cena=(INT($real_cena/10))*10+5
ELSE
if($ostatok>7.4))
$cena=(INT($real_cena/10))*10+10
ELSE
$cena=(INT($real_cena/10))*10
END_IF
END_IF
LOGWRITE("real_cena = ",$real_cena," cena = ",$cena)
END_SUB
Результат:
[spoiler]17:43:40 real_cena = 0 cena = 0
17:43:40 real_cena = 0.3 cena = 0
17:43:40 real_cena = 0.6 cena = 0
17:43:40 real_cena = 0.9 cena = 0
17:43:40 real_cena = 1.2 cena = 0
17:43:40 real_cena = 1.5 cena = 0
17:43:40 real_cena = 1.8 cena = 0
17:43:40 real_cena = 2.1 cena = 0
17:43:40 real_cena = 2.4 cena = 0
17:43:40 real_cena = 2.7 cena = 5
17:43:41 real_cena = 3 cena = 5
17:43:41 real_cena = 3.3 cena = 5
17:43:41 real_cena = 3.6 cena = 5
17:43:41 real_cena = 3.9 cena = 5
17:43:41 real_cena = 4.2 cena = 5
17:43:41 real_cena = 4.5 cena = 5
17:43:41 real_cena = 4.8 cena = 5
17:43:41 real_cena = 5.1 cena = 5
17:43:41 real_cena = 5.4 cena = 5
17:43:41 real_cena = 5.7 cena = 5
17:43:41 real_cena = 6 cena = 5
17:43:41 real_cena = 6.3 cena = 5
17:43:41 real_cena = 6.6 cena = 5
17:43:41 real_cena = 6.9 cena = 5
17:43:41 real_cena = 7.2 cena = 5
17:43:41 real_cena = 7.5 cena = 10
17:43:41 real_cena = 7.8 cena = 10
17:43:41 real_cena = 8.1 cena = 10
17:43:41 real_cena = 8.4 cena = 10
17:43:41 real_cena = 8.7 cena = 10
17:43:41 real_cena = 9 cena = 10
17:43:41 real_cena = 9.3 cena = 10
17:43:41 real_cena = 9.6 cena = 10
17:43:41 real_cena = 9.9 cena = 10
17:43:41 real_cena = 10.2 cena = 10
17:43:41 real_cena = 10.5 cena = 10
17:43:41 real_cena = 10.8 cena = 10
17:43:41 real_cena = 11.1 cena = 10
17:43:41 real_cena = 11.4 cena = 10
17:43:41 real_cena = 11.7 cena = 10
17:43:41 real_cena = 12 cena = 10
17:43:41 real_cena = 12.3 cena = 10
17:43:41 real_cena = 12.6 cena = 15
17:43:41 real_cena = 12.9 cena = 15
17:43:41 real_cena = 13.2 cena = 15
17:43:41 real_cena = 13.5 cena = 15
17:43:41 real_cena = 13.8 cena = 15
17:43:41 real_cena = 14.1 cena = 15
17:43:41 real_cena = 14.4 cena = 15
17:43:41 real_cena = 14.7 cena = 15
17:43:41 real_cena = 15 cena = 15
17:43:41 real_cena = 15.3 cena = 15
17:43:41 real_cena = 15.6 cena = 15
17:43:41 real_cena = 15.9 cena = 15
17:43:41 real_cena = 16.2 cena = 15
17:43:41 real_cena = 16.5 cena = 15
17:43:41 real_cena = 16.8 cena = 15
17:43:41 real_cena = 17.1 cena = 15
17:43:41 real_cena = 17.4 cena = 15
17:43:41 real_cena = 17.7 cena = 20
17:43:41 real_cena = 18 cena = 20
17:43:41 real_cena = 18.3 cena = 20
17:43:41 real_cena = 18.6 cena = 20
17:43:41 real_cena = 18.9 cena = 20
17:43:41 real_cena = 19.2 cena = 20
17:43:41 real_cena = 19.5 cena = 20
17:43:41 real_cena = 19.8 cena = 20
[/spoiler]
Версия у меня 4.7 SE, но этот кусок правильно работает и на 4.7
-
Vint!
Другими способами, немного другими строками сделать это хорошо, но ведь я должен разобраться в чем проблема, а не сделать скрипт!
Мне не надо лечить симптомы, а сразу болезнь, в будущем пригодится! :'(
-
Может у тебя опечатка... Может цены такие, что 5 получается.
Я ведь заново не писал, скопировал свой кусок и добавил перебор.
Ладно, вот вставил твой кусок... Всё нормально:
LOGCLEAR
$real_cena=0
WHILE($real_cena<20)
GOSUB(sub_name)
$real_cena=$real_cena+0.3
END_CYC
HALT
SUB(sub_name)
$round_cena = int($real_cena/10)*10
$ostatok = $real_cena - $round_cena
print("round_cena","-",$round_cena)
print("ostatok_before","-",$ostatok)
if($ostatok < 2.5)
$ostatok = 0
else
if($ostatok > 7.5)
$ostatok = 10
else
$ostatok = 5
end_if
end_if
print("ostatok","-",$ostatok)
END_SUB
-
Vint,
17:26:34 round_cena-10
17:26:34 ostatok_before-5.9
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-6.2
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-6.5
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-6.8
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-7.1
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-7.4
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-7.7
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-8
17:26:34 ostatok-10
17:26:34 round_cena-10
17:26:34 ostatok_before-8.3
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-8.6
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-8.9
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-9.2
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-9.5
17:26:34 ostatok-5
17:26:34 round_cena-10
17:26:34 ostatok_before-9.8
17:26:34 ostatok-5
17:26:34 round_cena-20
17:26:34 ostatok_before-0.100000000000001
17:26:34 ostatok-5
17:26:34 round_cena-20
17:26:34 ostatok_before-0.399999999999999
17:26:34 ostatok-5
17:26:34 round_cena-20
17:26:34 ostatok_before-0.699999999999999
17:26:34 ostatok-5
-
Если округлять $ostatok перед условиями сравнения, то получаются разные результаты, но бредовые...
-
Ладно, давайте все с начала!
Вот этот скрипт работает в кликермене 4.7 SE, но неправильно работает в 4.7 ... Почему?
$cena = strreadln("1.txt",1)
$ves = strreadln("1.txt",2)
$cena = inputbox("Юаней?",$cena,60)
$ves = inputbox("ВЕС?",$ves,60)
strwriteln("1.txt",$cena,1)
strwriteln("1.txt",$ves)
//строки >>> числа
$cena = int($cena)
$ves = int($ves)
$ves = $ves/10
//dollar/grn
$dolar = 8
$dol_kg = 20*$ves//доставка за 1 кг
$postavshik = 2//услуги поставщика
$real_cena = $cena*0.16+$postavshik
$real_cena = $real_cena/10+$real_cena
$real_cena = $real_cena+$dol_kg
$real_cena = $real_cena*1.5*$dolar//накрутка
//цена без последней цифры
$ostatok=$real_cena-int($real_cena/10)*10
print("real_cena_before","-",$real_cena)
print("ostatok_before","-",$ostatok)
По прежнему в этом месте происходит очень странное сравнение переменной с числом!!!!!!
if($ostatok < 2.5)
$ostatok = 0
else
if($ostatok > 7.5)
$ostatok = 10
else
$ostatok = 5
end_if
end_if
print("ostatok","-",$ostatok)
$real_cena = int($real_cena/10)*10+ $ostatok
print("real_cena","-",$real_cena)
hintpopup("---",$real_cena)
toclip($real_cena)
print("---------")
halt
-
А какой смысл разбирать баги старых версий? Я не знаю, почему в 4.7 если от10.2 отнять 10 получается 1.999999999999
В 4.7 SE всё правильно, результат 0.2
Я старые давно заархивировал и убрал с глаз долой.