Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.06.2012, 06:50   #1
Алекссс
Пользователь
 
Аватар для Алекссс
 
Регистрация: 25.06.2011
Сообщений: 55
По умолчанию среднее значение столбца в StringGrid

есть стринггрид и 5 столбцев. в 4 нужно посчитать среднее значение по всему столбцу и вывести в идит. не могу сообразить столько литературы перелопатил уже думал сумму делить на количество строк((( не катит. скажите плз. количество строчем может быть разным
ICQ 566505973 e-mail first_al@mail.ru
Алекссс вне форума
Старый 21.06.2012, 07:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
with StringGrid do begin tag:=0;
 for i:=0 to RowCount-1 do tag:=tag+StrtoIntDef(cells[i,Номер колонки],0);
 Результат:=1.0*tag/RowCount;
end;
Так понятнее?
I'm learning to live...
Stilet вне форума
Старый 21.06.2012, 09:43   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Stilet, пример хороший ) только разве что мозговзрывной для новичка.
Можно ли пояснить сакраментальный смысл умножения на 1.0 ? это же не питон какой... (пока только предполагаю, что нечто вроде защиты на этапе компиляции)

Ну, а Вам, ТС, совет, если Вы написали код, а он ведёт себя не так, как Вы ожидали, не надо писать про литературу, что и как Вы пытались сделать, что катит, выбивает, вылетает, ругается, глючит. Просто "show me the code" - покажите код, там разберёмся.

Я могу только накропать простенькую функу для Вас (она вдобавок учитывает количество фиксированных строк):
Код:
function GetAvgOfCol(SG: TStringGrid; ACol: Integer): Double;
var
  i : Integer;
begin
  Result := 0;
  for i := SG.FixedRowCount to SG.RowCount - 1 do
    Result := Result + StrtoIntDef(SG.Cells[i, ACol],0); // честно стибрил преобразование у Stilet
  Result := Result / (SG.RowCount - SG.FixedRowCount);
end;

Последний раз редактировалось phomm; 21.06.2012 в 09:46.
phomm вне форума
Старый 21.06.2012, 20:35   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можно ли пояснить сакраментальный смысл умножения на 1.0 ?
Tag - свойство integer; Я не знаю как компиль себя поведет, ведь он должен определять тип выражения по первому операнду.
I'm learning to live...
Stilet вне форума
Старый 21.06.2012, 22:13   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Есть деление int на int - результат в любом случае будет вещественный
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 21.06.2012, 23:00   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
результат в любом случае будет вещественный
Верно подмечено
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
среднее значение KaZaaM SQL, базы данных 2 01.06.2012 16:18
Среднее значение Dima-War Общие вопросы C/C++ 7 23.03.2012 10:37
Среднее значение tanyuxxxa Помощь студентам 4 03.03.2012 14:08
Среднее значение столбца ruavia3 Microsoft Office Excel 1 09.05.2009 19:01