Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.03;
Скачать: CL | DM;

Вниз

Двумерный массив,задача   Найти похожие ветки 

 
петрович07   (2008-01-06 00:42) [0]

Мастера скажите как быть, решаю задачу вроде простую,но реализация вызывает проблемы.
Дана матрица размером NxM. Упорядочить ее строки по возрастанию суммы их элементов.

Как матрица используется грид, эт условие такое.

У меня какие мысли создать еще один грид с двумя столбцами,в первый столбец записывать суммы, а во второй соответствующие индексы строк.
Далее пройтись циклом по первому столбцу и строки поменять.
Мне кажется мой алгоритм поршивый, какие будут у кого мысли, если можете то предложите свой вариант, буду очень признателен.
Спасибо!!!


 
homm ©   (2008-01-06 00:48) [1]

Мысль одна: Грид не предназначен для хранения данных, от которых нужно узнать сумму. Постановка поршивая. Так и так переводить во внутренний масив из чесел, работать с ним.


 
DVM ©   (2008-01-06 00:48) [2]


> У меня какие мысли создать еще один грид с двумя столбцами,
> в первый столбец записывать суммы, а во второй соответствующие
> индексы строк.

зачем тебе грид? создай массив динамический из одного столбца.
первый проход по матрице - находишь суммы и кладешь их в массив.
второй проход по массиву - сортировка его и одновременная строк матрицы.


 
turbouser ©   (2008-01-06 00:51) [3]

Не надо еще одного грида. Достаточно одного DrawGrid
Задача элементарная, так что решать ее придется самому.


 
петрович07   (2008-01-06 23:25) [4]

вот что получилось,но есть проблема с сортировкой строк. помогите

var
 sum, i, j, b, c: integer;
 A: array of byte;
 a_size: byte;
begin
 sum := 0;

 a_size := 4;
 SetLength(A, a_size);

 for j := 1 to StringGrid1.RowCount - 1 do
 begin
   for i := 1 to StringGrid1.ColCount - 1 do
   begin
     sum := sum + StrToInt(StringGrid1.Cells[i, j]);
   end;
   A[j - 1] := sum;
   sum := 0;
 end;

/сортировка сумм элементов строк
 for i := 0 to a_size-1 do
   for j := 0 to a_size-1 do
   begin
     if j + 1 > a_size-1 then Break;
     b := A[j];
     c := A[j + 1];
     if c < b then
     begin
       A[j] := c;
       A[j + 1] := b;
     end;
   end;


 
петрович07   (2008-01-06 23:25) [5]

вот что получилось,но есть проблема с сортировкой строк. помогите

var
 sum, i, j, b, c: integer;
 A: array of byte;
 a_size: byte;
begin
 sum := 0;

 a_size := 4;
 SetLength(A, a_size);

 for j := 1 to StringGrid1.RowCount - 1 do
 begin
   for i := 1 to StringGrid1.ColCount - 1 do
   begin
     sum := sum + StrToInt(StringGrid1.Cells[i, j]);
   end;
   A[j - 1] := sum;
   sum := 0;
 end;

/сортировка сумм элементов строк
 for i := 0 to a_size-1 do
   for j := 0 to a_size-1 do
   begin
     if j + 1 > a_size-1 then Break;
     b := A[j];
     c := A[j + 1];
     if c < b then
     begin
       A[j] := c;
       A[j + 1] := b;
     end;
   end;



Страницы: 1 вся ветка

Текущий архив: 2008.02.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
15-1198841892
user_
2007-12-28 14:38
2008.02.03
Поржом чуть чуть...???


2-1200054973
9899100
2008-01-11 15:36
2008.02.03
MDIchild отобразить модально


15-1198825503
Ega23
2007-12-28 10:05
2008.02.03
Есть у кого такой компонентик TXLSFile?


2-1199919772
{RASkov}
2008-01-10 02:02
2008.02.03
"Динамичные битовые маски"


15-1198473529
Kolan
2007-12-24 08:18
2008.02.03
Хотят заставить сделать интерпритатор, я упираюсь &amp;#133 :)