Вверх ↑
Этот топик читают: Гость
Ответов: 1536
Рейтинг: 176
#16: 2013-02-17 09:09:19 ЛС | профиль | цитата
Чего-то я не понимаю, а как минимум определить?
Add(Math,9050339,483,329)
{
OpType=38
link(onResult,12832715:doText,[])
link(Op1,9050339:Result,[(489,320)(475,320)(475,369)(489,369)])
}
Add(Math,2012656,483,273)
{
OpType=39
link(onResult,7171785:doText,[])
link(Op1,2012656:Result,[(489,264)(475,264)(475,313)(489,313)])
}
Add(MainForm,7652792,266,140)
{
Width=342
Height=393
link(onCreate,15873341:doFor,[])
}
Add(MinMax,11148593,483,161)
{
@Hint=#15:Компонент Tad-a|
DataCount=2
Mode=1
link(onCalc,154729:doText,[])
link(Data1,11148593:Result,[(489,152)(475,152)(475,201)(489,201)])
AddHint(79,-25,102,13,@Hint)
}
Add(Random,6573429,364,154)
{
Min=50
Mode=1
link(onRandom,6316580:doEvent1,[])
}
Add(For,15873341,315,154)
{
End=50
link(onEvent,6573429:doRandom,[])
}
Add(Label,154729,532,161)
{
Left=185
Top=55
}
Add(ListBox,9130392,483,98)
{
Left=10
Top=5
Width=165
Height=340
}
Add(Hub,6316580,413,154)
{
OutCount=7
link(onEvent1,9130392:doAdd,[(438,160)(438,104)])
link(onEvent2,11148593:doCalc,[])
link(onEvent3,14657048:doCalc,[(466,174)(466,223)])
link(onEvent4,2012656:doOperation,[(459,181)(459,279)])
link(onEvent5,9050339:doOperation,[(452,188)(452,335)])
link(onEvent6,7591115:doCalc,[(445,195)(445,391)])
link(onEvent7,16670094:doCalc,[(438,202)(438,447)])
}
Add(MinMax,14657048,483,217)
{
@Hint=#15:Компонент Tad-a|
DataCount=2
link(onCalc,557021:doText,[])
link(Data1,14657048:Result,[(489,208)(475,208)(475,257)(489,257)])
AddHint(79,-81,102,13,@Hint)
}
Add(Label,557021,532,217)
{
Left=185
Top=80
}
Add(Label,7171785,532,273)
{
Left=185
Top=155
}
Add(Label,12832715,532,329)
{
Left=185
Top=180
}
Add(MathParse,7591115,483,385)
{
MathStr="max(%1,%2)"
link(onResult,16271410:doText,[])
link(X1,7591115:Result,[(489,376)(475,376)(475,425)(489,425)])
}
Add(MathParse,16670094,483,441)
{
MathStr="min(%1,%2)"
link(onResult,3762055:doText,[])
link(X1,16670094:Result,[(489,432)(475,432)(475,481)(489,481)])
}
Add(Label,16271410,532,385)
{
Left=185
Top=245
}
Add(Label,3762055,532,441)
{
Left=185
Top=270
}
23232.jpg
------------ Дoбавленo в 08.48:
Понятно, что мы сразу сравниваем с нулём. А если мне нужно найти поток разной длины из цифр, кроме нуля?
------------ Дoбавленo в 09.09:
Чтобы найти минимальное значение в потоке нужно слепить вот такую схему.
Add(MainForm,7652792,105,112)
{
Width=342
Height=393
link(onCreate,6230537:doEvent1,[])
}
Add(Random,6573429,245,133)
{
Min=50
Mode=1
link(onRandom,6316580:doEvent1,[])
}
Add(For,15873341,189,133)
{
End=50
link(onEvent,6573429:doRandom,[])
link(onStop,1267123:doDelete,[(228,146)(228,209)])
}
Add(ListBox,9130392,336,70)
{
Left=10
Top=5
Width=165
Height=340
}
Add(Hub,6316580,294,133)
{
link(onEvent1,9130392:doAdd,[(319,139)(319,76)])
link(onEvent2,15210857:doStrCat,[])
}
Add(MathParse,16670094,518,196)
{
MathStr=""
Point(doMathStr)
link(onResult,3762055:doText,[])
}
Add(Label,3762055,567,196)
{
Left=185
Top=270
}
Add(StrCat,3436990,392,140)
{
Point(doClear)
link(Str1,9192947:Var1,[(398,131)(384,131)(384,187)])
}
Add(Delete,1267123,385,203)
{
Count=1
Direction=1
link(onDelete,5059956:doString,[])
link(Str,9192947:Var2,[])
}
Add(GetDataEx,9192947,385,182)
{
Angle=1
link(Data,3436990:Result,[(398,187)])
}
Add(FormatStr,5059956,434,203)
{
DataCount=1
Mask="min(%1)"
link(onFString,4336206:doEvent1,[])
}
Add(Hub,4336206,476,203)
{
link(onEvent1,16670094:doMathStr,[])
link(onEvent2,16670094:doCalc,[(501,216)(501,202)])
}
Add(StrCat,15210857,336,140)
{
Str2=","
link(onStrCat,3436990:doStrCat,[])
}
Add(Hub,6230537,154,126)
{
link(onEvent1,3436990:doClear,[(375,132)(375,153)])
link(onEvent2,15873341:doFor,[])
}
А проще сделать возможно
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 16884
Рейтинг: 1239
#17: 2013-02-17 09:33:44 ЛС | профиль | цитата
code_30355.txt
------------ Дoбавленo в 09.33:
ser_davkin писал(а):
А если мне нужно найти поток разной длины из цифр
То что ты нарисовал и то что я выложил - это никак не "поток разной длины". Длина числа и значение числа - это разные вещи.
Конкретне можешь выразиться, "чё те надо (с)" ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_30355.txt [1.2KB] [247]
Ответов: 1536
Рейтинг: 176
#18: 2013-02-17 09:42:23 ЛС | профиль | цитата
Tad, не придирайся к словам. Ты и так понял о чём я. Всё, вопросов нет.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 8930
Рейтинг: 823
#19: 2013-02-17 10:29:52 ЛС | профиль | цитата
Tad, а если подавать сколь угодно данных в МТ-потоке (как ser_davkin хочет) быстрее обработка, или нет? Попробуйте!
карма: 19

0
Ответов: 3349
Рейтинг: 233
#20: 2013-02-17 11:28:39 ЛС | профиль | цитата
Для разнообразия. code_30356.txt
карма: 1

0
файлы: 1code_30356.txt [912B] [454]
Ответов: 1536
Рейтинг: 176
#21: 2013-02-17 11:42:08 ЛС | профиль | цитата
О, Ivann идею подал.
Add(Label,7674035,343,469)
{
Left=195
Top=140
}
Add(MainForm,1440812,98,280)
{
Width=290
Height=390
link(onCreate,15873341:doFor,[])
}
Add(Random,6573429,217,294)
{
Mode=1
link(onRandom,9130392:doAdd,[])
}
Add(For,15873341,161,294)
{
End=50
link(onEvent,6573429:doRandom,[])
link(onStop,12227903:doSort,[(207,307)(207,363)])
}
Add(ListBox,9130392,266,294)
{
Left=10
Top=5
Width=165
Height=340
}
Add(MathParse,8887626,280,427)
{
MathStr="%1[%2 - 1]"
link(onResult,8415084:doText,[])
link(X1,7041942:Var2,[])
link(X2,11568087:Var2,[])
}
Add(Label,8415084,343,427)
{
Left=195
Top=95
}
Add(MathParse,7186042,294,469)
{
MathStr="%1[0]"
link(onResult,7674035:doText,[])
link(X1,7041942:Var3,[(300,418)])
link(X2,11568087:Var3,[(307,404)])
}
Add(Hub,15331251,238,427)
{
link(onEvent1,8887626:doCalc,[])
link(onEvent2,7186042:doCalc,[(270,440)(270,475)])
}
Add(GetDataEx,7041942,280,413)
{
link(Data,12227903:ArraySort,[])
}
Add(GetDataEx,11568087,287,399)
{
link(Data,12227903:Count,[])
}
Add(ArraySort,12227903,280,357)
{
ArrayType=2
link(onEndSort,15331251:doEvent1,[(319,363)(319,391)(228,391)(228,433)])
link(Array,9130392:Array,[])
}
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 16884
Рейтинг: 1239
#22: 2013-02-17 12:38:20 ЛС | профиль | цитата
Леонид, отрабатывал алгоритм как обычно на HiAsm-е. Быстро и удобно. У меня в программе было 12 мест, где нужно было найти min из от 3-х до 20-ти данных.
Применил MathParse. Медленно. Решил перейти на IC.
На четвертом или пятом IC надоело править коды под разное число точек. Так и родился этот компонент.
Выложил для обмена опытом. Поэтому нет ни строчки в ini View=Mode,20, ни иконок.
В моей ASM программе этот код (min) оформлен функцией в которую передается только число точек.


------------ Дoбавленo в 12.38:
ser_davkin, сортировка всегда будет работать медленнее чем "прямое" вычисление.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Гость
Ответов: 17029
Рейтинг: 0
#23: 2013-02-17 12:38:33 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 14:50:56
карма: 0

0
Ответов: 9906
Рейтинг: 351
#24: 2013-02-17 13:43:52 ЛС | профиль | цитата
Уважаемые коллеги, я позволю себе напомнить Вам, что сортрировка имеет асимптотику N*ln(N)
А простой минимакс просит всего N
------------ Дoбавленo в 13.43:
Tad опередил
карма: 9

0
Гость
Ответов: 17029
Рейтинг: 0
#25: 2013-02-17 14:14:09 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 14:50:55
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#26: 2013-02-17 14:51:30 ЛС | профиль | цитата
Ivann,
Tad писал(а):
килограммы не так важны были, как нужна была скорость.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
26
Сообщение
...
Прикрепленные файлы
(файлы не залиты)