Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

Среднее значение показателей типа TTime   Найти похожие ветки 

 
Jaroslight ©   (2009-11-09 18:04) [0]

Подскажите, пожалуйста, как написать код, который вычисляет среднее значение показателей типа TTime. Например, несколько команд лыжников показало свои результаты. Затем на каждую команду нужно рассчитать среднее значение результатов лыжников. Результат измеряется во времени и среднее значение должно быть тоже временным. Итог будет выводится после нажатия кнопки.


 
RWolf ©   (2009-11-09 18:06) [1]

а чем среднее значение времени принципиально отличается от среднего любой другой величины? складывай и дели на число измерений.


 
Jaroslight ©   (2009-11-09 18:14) [2]

Забыл, сказать, что для вычисления используется динамический массив. Функция Mean не подходит.


 
Медвежонок Пятачок ©   (2009-11-09 18:16) [3]

лыжники не могут показать результат типа TTime


 
Jaroslight ©   (2009-11-09 18:17) [4]

Результаты для вычисления среднего значения берутся сразу из ListView. А итог выводится в Edit.


 
Jaroslight ©   (2009-11-09 18:19) [5]


> лыжники не могут показать результат типа TTime

Почему? Результат лыжника выглядит так 0:15:45, то есть 15 мин 45 сек. Таких результатов несколько и нужно рассчитать среднее.


 
Медвежонок Пятачок ©   (2009-11-09 18:23) [6]

потому что TTime это на самом деле TDateTime

если твоих лыжников на финише фиксируют что они пришли к финишу 9 ноября 2009 года в 18:22:01.234, то тогда этот тип подойдет для хранения результата.

Но для лыжников больше подходит double или integer на худой конец. Но никак не TDateTime


 
Медвежонок Пятачок ©   (2009-11-09 18:25) [7]

Результаты для вычисления среднего значения

а что такое среднее значение для полдня 14 июля 1878 года и 25 декабря 2020 года в три часа дня?


 
Медвежонок Пятачок ©   (2009-11-09 18:26) [8]

то есть 15 мин 45 сек. Таких результатов несколько и нужно рассчитать среднее.

Это не TTime и не TDateTime, это integer чистой воды


 
Jaroslight ©   (2009-11-09 18:38) [9]

Т
> Но для лыжников больше подходит double или integer на худой
> конец. Но никак не TDateTime

Ты прав. Я ошибся с типом. То есть, короче, мне сначала нужно использовать DecodeTime для всех результатов, рассчитать среднее, а затем EncodeTime. Я правильно понял?


 
Медвежонок Пятачок ©   (2009-11-09 18:42) [10]

нужно фиксировать целое количество секунд (или миллисекунд).
или юзать дабл и фиксировать дробное количество секунд.
или как там в спорте результаты считаются.

тогда и среднее сразу понятно как вычислять и сразу видно кто быстрее ездит


 
Медвежонок Пятачок ©   (2009-11-09 18:44) [11]

а в отчетах можно конечно пересчитывать в удобоваримый для восприятия вид. скажем два часа тинадцать минут шесть секунд и еще три сотых секунды.

если же хранить время старта и финиша (тот самый TDateTime), что в принципе тоже возможно, то тогда:
без пересчетов фик поймешь кто быстрее ездит и что там со средним по палате


 
Юрий Зотов ©   (2009-11-09 19:11) [12]

> Jaroslight ©   (09.11.09 18:38) [9]

Тип TTime - это абсолютное значение времени суток.

А результат лыжника - это интервал времени между моментом старта и моментом финиша. Этот результат вполне может измеряться целым числом (секунд, миллисекунд и т.п.). Если так и сделать, то расчет среднего реультата будет самым обычным.


 
Jaroslight ©   (2009-11-09 19:25) [13]

Спасибо! Решение я нашёл. Для любопытства выкладываю код.

procedure TForm1.Button1Click(Sender: TObject);
var
 i,j: word; // счётчики
 r: array of TTime; // динамический массив
 SumTime,MeanTime: TTime; // сумма и среднее значение
begin
 N := ListView1.Items.Count;
 SetLength(r,N);
 for i := 0 to N - 1 do
   r[i] := StrToTime(ListView1.Items.Item[i].SubItems[№_столбца]);

 SumTime := StrToTime("0:00:00");
 for j := 0 to N - 1 do
   SumTime := SumTime + r[j];

 MeanTime := SumTime / N;
 Edit1.Text := TimeToStr(MeanTime);
end;


 
palva ©   (2009-11-09 19:45) [14]

Можно еще дату отрезать. Чтоб не вводила в заблуждение.
Edit1.Text := copy(TimeToStr(MeanTime), 12, 8);


 
palva ©   (2009-11-09 19:49) [15]


> palva ©   (09.11.09 19:45) [14]

Извините, был неправ, перепутал с функцией DateTimeToStr



Страницы: 1 вся ветка

Текущий архив: 2009.12.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
15-1256739460
MonoLife
2009-10-28 17:17
2009.12.27
Пожирание памяти в Windows7 x64.


2-1257501455
d@nger
2009-11-06 12:57
2009.12.27
dxDBTreeView и картинки


15-1256329810
Юрий
2009-10-24 00:30
2009.12.27
С днем рождения ! 24 октября 2009 суббота


2-1257502260
kyn66
2009-11-06 13:11
2009.12.27
Останавливается информация о ходе выполнения процесса


1-1230616083
Karburator
2008-12-30 08:48
2009.12.27
сложное заглавие таблицы