Главная страница
    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.45 MB
Время: 0.049 c
15-1198489890
KV
2007-12-24 12:51
2008.02.03
delphi &amp; vista


2-1199521623
MOO
2008-01-05 11:27
2008.02.03
HexToStr


2-1198248676
botaniQ
2007-12-21 17:51
2008.02.03
Ошибка "has encountered a problem and needs to close..."


15-1198508987
Andy BitOff
2007-12-24 18:09
2008.02.03
Почему после блокировки ...


1-1193417311
terc
2007-10-26 20:48
2008.02.03
получения род окна зная hwnd дочернего ??





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский