![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Среднее значение показателей типа TTime [D7]
Jaroslight © (2009-11-09 18:04:00)Подскажите, пожалуйста, как написать код, который вычисляет среднее значение показателей типа TTime. Например, несколько команд лыжников показало свои результаты. Затем на каждую команду нужно рассчитать среднее значение результатов лыжников. Результат измеряется во времени и среднее значение должно быть тоже временным. Итог будет выводится после нажатия кнопки.
palva (2009-11-09 19:49:00) [1]
> palva © (09.11.09 19:45) [14]
Извините, был неправ, перепутал с функцией DateTimeToStr
palva (2009-11-09 19:45:00) [2]Можно еще дату отрезать. Чтоб не вводила в заблуждение.
Edit1.Text := copy(TimeToStr(MeanTime), 12, 8);
Jaroslight (2009-11-09 19:25:00) [3]Спасибо! Решение я нашёл. Для любопытства выкладываю код.
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;
Юрий Зотов (2009-11-09 19:11:00) [4]> Jaroslight © (09.11.09 18:38) [9]
Тип TTime - это абсолютноезначение времени суток.
А результат лыжника - это интервалвремени между моментом старта и моментом финиша. Этот результат вполне может измеряться целым числом (секунд, миллисекунд и т.п.). Если так и сделать, то расчет среднего реультата будет самым обычным.
Медвежонок Пятачок (2009-11-09 18:44:00) [5]а в отчетах можно конечно пересчитывать в удобоваримый для восприятия вид. скажем два часа тинадцать минут шесть секунд и еще три сотых секунды.
если же хранить время старта и финиша (тот самый TDateTime), что в принципе тоже возможно, то тогда:
без пересчетов фик поймешь кто быстрее ездит и что там со средним по палате
Медвежонок Пятачок (2009-11-09 18:42:00) [6]нужно фиксировать целое количество секунд (или миллисекунд).
или юзать дабл и фиксировать дробное количество секунд.
или как там в спорте результаты считаются.
тогда и среднее сразу понятно как вычислять и сразу видно кто быстрее ездит
Jaroslight (2009-11-09 18:38:00) [7]Т
> Но для лыжников больше подходит double или integer на худой
> конец. Но никак не TDateTime
Ты прав. Я ошибся с типом. То есть, короче, мне сначала нужно использовать DecodeTime для всех результатов, рассчитать среднее, а затем EncodeTime. Я правильно понял?
Медвежонок Пятачок (2009-11-09 18:26:00) [8]то есть 15 мин 45 сек. Таких результатов несколько и нужно рассчитать среднее.
Это не TTime и не TDateTime, это integer чистой воды
Медвежонок Пятачок (2009-11-09 18:25:00) [9]Результаты для вычисления среднего значения
а что такое среднее значение для полдня 14 июля 1878 года и 25 декабря 2020 года в три часа дня?
Медвежонок Пятачок (2009-11-09 18:23:00) [10]потому что TTime это на самом деле TDateTime
если твоих лыжников на финише фиксируют что они пришли к финишу 9 ноября 2009 года в 18:22:01.234, то тогда этот тип подойдет для хранения результата.
Но для лыжников больше подходит double или integer на худой конец. Но никак не TDateTime
Jaroslight (2009-11-09 18:19:00) [11]
> лыжники не могут показать результат типа TTime
Почему? Результат лыжника выглядит так 0:15:45, то есть 15 мин 45 сек. Таких результатов несколько и нужно рассчитать среднее.
Jaroslight (2009-11-09 18:17:00) [12]Результаты для вычисления среднего значения берутся сразу из ListView. А итог выводится в Edit.
Медвежонок Пятачок (2009-11-09 18:16:00) [13]лыжники не могут показать результат типа TTime
Jaroslight (2009-11-09 18:14:00) [14]Забыл, сказать, что для вычисления используется динамический массив. Функция Mean не подходит.
RWolf (2009-11-09 18:06:00) [15]а чем среднее значение времени принципиально отличается от среднего любой другой величины? складывай и дели на число измерений.