Что нового

Формула для поиска наилучшего варианта

Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
Ок, попробую...
Код выглядит на данный момент примерно так:
Код:
$sTextHTML = _IEDocReadHTML($oIE)
		$aBlock=StringRegExp($sTextHTML,"(?si)noWrap>.*?</FORM></TD>",3) ;находим блок со всеми параметра, включая инпуты
		For $i=0 To 4 ; Задано от 0 до 4, так как максимальное количество блоков 5
			$aPar=StringRegExp($aBlock[$i],"(?si)(\d*:?\d*:?\d+?)%?<(?:BR|/SPAN)>",3); Массив параметров блока (4)
			If $aPar[0]>20 And $aPar[1]>1 And $aPar[3]<50 Then ; критерии параметров за исключением третьего, времени, которое появиться гораздо позже в слипе
				$Formula = $aPar[0]*$aPar[1]/$aPar[3] ; Формула по которой расчитывается идеальное соотношение параметров в строке
			Else
				$Formula = 0 ; это строка неоходима в случае, если один из параметров не отвечает условиям
			EndIf
		Next
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Пока нет четкого алгоритма нахождения нужного Inputa все телодвижения бесполезны


Добавлено:
Сообщение автоматически объединено:

Lum [?]
$Formula = $aPar[0]*$aPar[1]/$aPar[3] ; Формула по которой расчитывается идеальное соотношение параметров в строке

Что делать с этой формулой ?
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
ок, сейчас по другому попробую.
Есть от 1 до 5 полей, в которых по 4 параметра + кнопка (инпут).
Если три парамера удовлетворяют условиям $aPar[0]>20 And $aPar[1]>1 And $aPar[3]<50
то нужно высчитать их коэффициент, так это назову, $aPar[0]*$aPar[1]/$aPar[3]
То поле которому соответствует больший коэффициент и есть нужно, соответственно жмем на кнопку этого поля.

Примерно так.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Lum [?]
Но ведь это сделано ведь в посте 29 на предыдущей страницею
Ты же сказала а если их несколько
[?]
Угу... вот потому-то и возник вопрос... Оно только последнее находило, а надо было, лучшее так сказать...

И что делать ?
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
неа, если 2 коэффициента сравнивает, то работает, если более, то не работает(
Мне потому и пришла в голову дурацкая мысля ввести третий массив, где будут сравниваться $Formula, но как это реализовать я не знаю...
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
не, ну не совсем не работает, работает, но не так как надо... Если больше 2 коэффициентов они между собой сравниваться не желают(
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Может кто-то из ботоводов поможет составить алгоритм того ,что нужно ? Помощники вроде заглядывают.
Я в ботах -чайник.
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
Да ничего страшно, все равно докопаюсь) Куда ж я денусь?) :smile:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Чтобы помошники помогли, они должны знать все параметры и возможные значения этих 3-х коэффициентов. Пример:
1-й коэффициент: "Название", "смысл коэффициента", "минимальное и максимальное значение", "какое лучше", ну и вся возможная по этому коэффициенту инфа.
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Lum [?]
не, ну не совсем не работает, работает, но не так как надо... Если больше 2 коэффициентов они между собой сравниваться не желают(
Поставь перед If...... строку с MsgBox со сравниваемыми параметрами и будет видно в чем причина
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
Стоит) Причина в том, что всякий раз новое окно MsgBoxа появляется... там все последовательно...
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Lum [?]
Стоит) Причина в том, что всякий раз новое окно MsgBoxа появляется... там все последовательно...

Ха, значит алгоритм :
Код:
If $aPar[0]>20 And $aPar[1]>1 And $aPar[3]<50 Then

выбран неверно.
Полей одновременно удовлетворяющих 3-м условиям в тексте нет или один из параметров отсутствует
Чтобы убедиться в этом достаточно поставить : .... And $aPar[3]<1000 если не выполняется с 3-м параметром и т.п.
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
А вот и нет, верно)
Просто так и должно быть) Часть полей будет удовлетворять его условия, а часть не будет этого делать!
Он для того и вводится, для того я предлагаю приравнивать формулу к 0, если поле не соответствует условиям)
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Lum [?]
не, ну не совсем не работает, работает, но не так как надо... Если больше 2 коэффициентов они между собой сравниваться не желают(
Так же говорила ?

А есть ли в тексте вообще хоть одно поле у которого все 3 параметра удовлетворяют этому условию ?
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
вот в том-то и дело, если таких полей, удовлетворяющих условию больше 2, то как их сравнить не понятно(
Я сравнивала:
$Formula>$Formula
Если только одно поле удовлетворяет условиям, то естественно оно будет больше (т.к. то, что не удовлетворяет 0), тем более, если этих полей всего 2.
А если полей больше 2, да еще и несколько полей удовлетворяют условию, то такое сравнение ничего не дает(

Код:
$sTextHTML = _IEDocReadHTML($oIE)
		$aBlock=StringRegExp($sTextHTML,"(?si)noWrap>.*?</FORM></TD>",3)
		dim $iMaxNumber=0
		For $i=0 To UBound($aBlock)-1
			$aPar=StringRegExp($aBlock[$i],"(?si)(\d*:?\d*:?\d+?)%?<(?:BR|/SPAN)>",3)
			If $aPar[0]>20 And $aPar[1]>1 And $aPar[3]<50 Then
				$Formula = $aPar[0]*$aPar[1]/$aPar[3]
			Else
				$Formula = 0
			EndIf
			  If $Formula < $iMaxNumber  Then ContinueLoop
			$iMaxNumber=$Formula
			MsgBox(0,"", "" & $iMaxNumber, 20)
		Next


И так тоже пыталась, но получается 2 максимальных числа, а нужно только 1
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Lum [?]
$Formula>$Formula
Если только одно поле удовлетворяет условиям, то естественно оно будет больше (т.к. то, что не удовлетворяет 0), тем более, если этих полей всего 2.
А если полей больше 2, да еще и несколько полей удовлетворяют условию, то такое сравнение ничего не дает(

Об этом мы уже говорили :
gregaz [?]
Но ведь это сделано ведь в посте 29 на предыдущей страницею

Это называется как ......?

Там же уже опредилили поле с максимальным значением $Formula
Если есть несколько полей с таким значением то автор задачи должен сказать программе что делать ?
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
эээ... то есть тупо заставить его нажать и все...
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Lum [?]
эээ... то есть тупо заставить его нажать и все...

На кого ? В каком поле ?



Добавлено:
Сообщение автоматически объединено:

Если есть скажем 3 числа : 30 30 30
Как сказать какое из них лучше?
 
Автор
L

Lum

Новичок
Сообщения
61
Репутация
3
Ладно, тогда их проще просто перебрать, каждое поле в отдельности... Это единственный выход.
 
Верх