Главная страница
    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
2-1199563649
Pavelq
2008-01-05 23:07
2008.02.03
TListBox, CNDrawItem


15-1197891695
data
2007-12-17 14:41
2008.02.03
а кто куда носит компы в ремонт?


2-1200025259
Washington
2008-01-11 07:20
2008.02.03
ShellExecute не работает


15-1198833334
авыф
2007-12-28 12:15
2008.02.03
Perl или PHP


2-1199616351
Евгений
2008-01-06 13:45
2008.02.03
базы данных





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