Вверх ↑
Этот топик читают: Гость
Ответов: 4
Рейтинг: 1
#1: 2012-02-25 18:48:11 ЛС | профиль | цитата
Доброго всем,
Подскажите пожалуйста, каким способом оптимальней всего нахождение среднего арифметического значения из 10 входящих чисел,
То что я сотворил:
code_27010.txt
Мне кажется это не совсем правильно с глобальными переменными, может есть более простой способ о котором я пока не знаю?
И возможно из-за этого кода и тупить начинает моя программа с течением времени.


карма: 0

0
файлы: 1code_27010.txt [3.3KB] [131]
Ответов: 3889
Рейтинг: 362
#2: 2012-02-25 19:13:37 ЛС | профиль | цитата
sergey81, здесь достаточно десятикратного сложения ячейки памяти (например, Memory) с каждым новым числом и деления на десять по окончании. Подсчитав Counter количество вошедших чисел и поделив на него сумму получите среднее арифметическое чего угодно.
------------ Дoбавленo в 19.13:
А если список чисел нужен, то записывайте его в массив или многострочный компонент, к которому снизу можно обращаться как к массиву и используйте мат. статистику из вкладки "массивы".
карма: 1

0
Ответов: 4
Рейтинг: 1
#3: 2012-02-25 19:21:43 ЛС | профиль | цитата
Поток чисел идёт постоянно день за днём, неделя за неделями и т.д.
Не совсем понял как организовать с элементом memory, можно простенький пример?
карма: 0

0
Ответов: 3889
Рейтинг: 362
#4: 2012-02-25 20:00:15 ЛС | профиль | цитата
sergey81, Поправил схему, чтобы работала на старых сборках, без CounterEx. Но настоятельно рекомендую обновиться с SVN или из моей подписи, а потом с SVN.


Add(Random,1039395,434,203)
{
Min=18
Max=25
link(onRandom,5178964:doOperation,[])
}
Add(Timer,15482867,385,203)
{
Interval=500
Enable=1
link(onTimer,1039395:doRandom,[])
}
Add(Button,15326952,336,203)
{
Left=15
Top=15
Align=2
Caption="Go>>>"
link(onClick,15482867:doTimer,[])
}
Add(Math,5178964,490,203)
{
Point(doClear)
link(onResult,1:doNext,[])
link(Op2,10797810:Var3,[(503,191)(532,191)(532,249)])
}
Add(Memo,15520292,539,273)
{
Left=385
Top=325
Align=5
}
Add(GetDataEx,10797810,490,244)
{
link(Data,5178964:Result,[])
}
Add(Hub,6123012,455,273)
{
link(onEvent1,13243661:doOperation,[])
link(onEvent2,5178964:doClear,[(479,286)(479,216)])
}
Add(Counter,1,539,203)
{
Max=9
link(onNext,555780:doCompare,[])
}
Add(If_else,555780,588,203)
{
Op2=Integer(0)
link(onTrue,6123012:doEvent1,[(632,209)(632,333)(443,333)(443,279)])
}
Add(Math,13243661,490,273)
{
OpType=3
Op2=10
link(onResult,15520292:doAdd,[])
link(Op1,10797810:Var2,[])
}


карма: 1

1
Голосовали:sergey81
Ответов: 8930
Рейтинг: 823
#5: 2012-02-25 21:25:30 ЛС | профиль | цитата
sergey81 писал(а):
Поток чисел идёт постоянно день за днём, неделя за неделями
Надо хранить на диске (в файле или в реестре) последние значения. Пример с записью в файл *.ini при закрытии программы. average.rar
карма: 19

0
файлы: 1average.rar [2.3KB] [80]
Ответов: 4
Рейтинг: 1
#6: 2012-02-25 22:48:04 ЛС | профиль | цитата
Леонид писал(а):
Надо хранить на диске (в файле или в реестре) последние значения. Пример с записью в файл *.ini при закрытии программы.

Это конечно круто выглядит, но слишком уж сложная схема для всего лишь среднего арифметического )
1nd1g0 писал(а):
Поправил схему, чтобы работала на старых сборках, без CounterEx

Спасибо за примерчик, действительно простое решение.

Ещё вопрос: при использовании элемента memory, запомненное значение в памяти стирается ли при следующем значение поступающего в него(ячейка памяти) или записывает в новую ячейку памяти при этом старое значение остается? т.е. вот идёт непрерывный поток значений в этот элемент с интервалом 200мс в течении долгого времени, не станет ли раздуваться память от этого и следствии будет влиять на производительность программы?
карма: 0

0
Ответов: 1061
Рейтинг: 22
#7: 2012-02-25 22:53:39 ЛС | профиль | цитата
sergey81 писал(а):
Ещё вопрос: при использовании элемента memory, запомненное значение в памяти стирается ли при следующем значение поступающего в него(ячейка памяти) или записывает в новую ячейку памяти при этом старое значение остается? т.е. вот идёт непрерывный поток значений в этот элемент с интервалом 200мс в течении долгого времени, не станет ли раздуваться память от этого и следствии будет влиять на производительность программы?

Не будет! Она заменяется новыми значениями!
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#8: 2012-02-26 12:47:17 ЛС | профиль | цитата
Находит среднее арифметическое потока, который никогда не прерывается, с буфером в 10 элементов: code_27016.txt
карма: 10
0
файлы: 1code_27016.txt [1.4KB] [118]
Ответов: 8930
Рейтинг: 823
#9: 2012-02-26 14:29:49 ЛС | профиль | цитата
Ну, думаю: Началось! Экспонетциальное сглаживание (усреднение), даже с графиком code_27017.txt
карма: 19

3
файлы: 1code_27017.txt [1KB] [155]
Голосовали:Tad, foksov, tig-rrr
Ответов: 4
Рейтинг: 1
#10: 2012-02-26 16:58:27 ЛС | профиль | цитата
Здорово! Большое спасибо!
А почему в прикрепленных кодах отображается крякозябры вместо рус.яз (св-во caption)?
карма: 0

0
Ответов: 3889
Рейтинг: 362
#11: 2012-02-26 17:01:05 ЛС | профиль | цитата
sergey81, кодировку в настройках браузера для этого сайта на UTF-8 переключите.
карма: 1

0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)