Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.007 c
15-1256647102
Scot Storch
2009-10-27 15:38
2009.12.27
Проблема с кодировкой (русские символы)


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


15-1256842565
Piter
2009-10-29 21:56
2009.12.27
IE6 не воспринимает "return false;" в событии onclick в ссылках


3-1232433164
Matveih1
2009-01-20 09:32
2009.12.27
Данные не обновляются


4-1226050103
pushkin42
2008-11-07 12:28
2009.12.27
А какое сообщение возникает когда...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский