Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
ВнизСреднее значение показателей типа 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c