![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Двумерный массив,задача
петрович07 © (2008-01-06 00:42:00)Мастера скажите как быть, решаю задачу вроде простую,но реализация вызывает проблемы.
Дана матрица размером NxM. Упорядочить ее строки по возрастанию суммы их элементов.
Как матрица используется грид, эт условие такое.
У меня какие мысли создать еще один грид с двумя столбцами,в первый столбец записывать суммы, а во второй соответствующие индексы строк.
Далее пройтись циклом по первому столбцу и строки поменять.
Мне кажется мой алгоритм поршивый, какие будут у кого мысли, если можете то предложите свой вариант, буду очень признателен.
Спасибо!!!
петрович07 (2008-01-06 23:25:00) [1]вот что получилось,но есть проблема с сортировкой строк. помогите
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:00) [2]вот что получилось,но есть проблема с сортировкой строк. помогите
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;
turbouser (2008-01-06 00:51:00) [3]Не надо еще одного грида. Достаточно одного DrawGrid
Задача элементарная, так что решать ее придется самому.
homm (2008-01-06 00:48:00) [4]Мысль одна: Грид не предназначен для хранения данных, от которых нужно узнать сумму. Постановка поршивая. Так и так переводить во внутренний масив из чесел, работать с ним.
DVM (2008-01-06 00:48:00) [5]
> У меня какие мысли создать еще один грид с двумя столбцами,
> в первый столбец записывать суммы, а во второй соответствующие
> индексы строк.
зачем тебе грид? создай массив динамический из одного столбца.
первый проход по матрице - находишь суммы и кладешь их в массив.
второй проход по массиву - сортировка его и одновременная строк матрицы.