Главная страница
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.024 c
15-1198321867
Kostafey
2007-12-22 14:11
2008.02.03
С днем рождения ! 22 декабря


15-1198607831
vrem_
2007-12-25 21:37
2008.02.03
Что планируете на следующий год?


2-1199770321
XerSon
2008-01-08 08:32
2008.02.03
Как в реестр записать и считать двоичные данные, к примеру (50)


2-1199547471
VAD*Anti Gopn!k
2008-01-05 18:37
2008.02.03
IP-адреса локальной сети.


15-1199134826
Ega23
2008-01-01 00:00
2008.02.03
С Новым Годом!!!!