Текущий архив: 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