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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2009, 00:26   #1
MaksimSeriy
 
Регистрация: 31.03.2009
Сообщений: 8
Радость TStringGrid (вывод данных из массива)

Среднестатистическим назовем элемент массива, если для него модуль разности его значения и среднего арифметического элементов массива достигает минимума. Аналогично, уникальным будем называть элемент, для которого такой модуль разности достигает максимума. В заданном массиве Х(n, m) найти номера (индексы) среднестатистического и уникального элементов.

Задача полностью решена!

Код:
procedure TForm1.BitBtn_OkClick(Sender: TObject);
 var n, m, i, j, fix_n, fix_m, unik_i,unik_j,sr_i,sr_j: integer;
   sa, sum: real;
   unik,sr_st, k: real;
   a: array of array of real;
begin

   n:=StringGrid_In.ColCount;
   m:=StringGrid_In.RowCount;
   fix_n:=StringGrid_In.FixedCols;  
   fix_m:=StringGrid_In.FixedRows; 
     SetLength(a,n-fix_n);
     for i:=0 to n-fix_n-1 do
     SetLength(a[i],m-fix_m);
    
 for i:= fix_n to n-1 do
 for j:= fix_m to m-1 do
   a[i-fix_n,j-fix_m]:= StrToFloat(StringGrid_In.Cells[i,j]);
   sum:=0; 
   unik:=1;
   sr_st:=1;
   k:=0;
   for i:=1 to n-1 do
   for j:=1 to m-1 do begin

     sum:=sum+a[i-fix_n,j-fix_m];

   end;

     sa:=(sum)/((n-fix_n)*(m-fix_m)); 

   for i:=1 to n-1 do
   for j:=1 to m-1 do  begin
   k:=abs(a[i-fix_n,j-fix_m]-sa); 
   if unik<k then
   begin
   unik:=k; 
   unik_i:=i;
   unik_j:=j;
   a[i-fix_n,j-fix_m]:=  a[unik_i-fix_n,unik_j-fix_m];
   end;
   if sr_st>k then begin
   sr_st:=k;
   sr_i:=i;
   sr_j:=j;
   a[i-fix_n,j-fix_m]:=  a[sr_i-fix_n,sr_j-fix_m];
   end;
   end;

   n:=StringGrid_Out.ColCount;
   m:=StringGrid_Out.RowCount;
   fix_n:=StringGrid_Out.FixedCols;
   fix_m:=StringGrid_Out.FixedRows;

   StringGrid_Out.Cells[unik_i,unik_j]:= FloatToStr(a[unik_i-fix_n,unik_j-fix_m]);
   StringGrid_Out.Cells[sr_i,sr_j]:= FloatToStr( a[sr_i-fix_n,sr_j-fix_m]);

   end;
end.

Последний раз редактировалось MaksimSeriy; 10.04.2009 в 23:22.
MaksimSeriy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TStringGrid MyQwErTy Помощь студентам 7 26.02.2009 13:13
TStringGrid anton14 Общие вопросы Delphi 7 10.10.2008 15:46
TStringGrid Gromsky Компоненты Delphi 4 04.03.2008 23:41
TStringGrid mrandrey Компоненты Delphi 2 06.07.2007 15:24