![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Narcisa |
![]() ![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 4 Пол: Женский Репутация: ![]() ![]() ![]() |
Такая, вроде бы банальная задачка: как отсортировать двумерный массив в Дэлфи? Но "чем только я ее ни пробовала" ....
![]() Вобще задача такая: нужно отсортировать так, чтобы максимальный элемент оказался в одном углу, и так по убывающей числа бы в матрице шли в другой угол. Так получается, когда сортируешь матрицу 2 раза: сначала по строкам, затем - по столбцам (или наоборот). Вот только мне не удается даже 1 раз 2-мерный массив отсортировать ![]() ![]() Перепробовала много способов и вариантов, а результат один:либо просто все перетасовывается, либо половина чисел заменяется "0"-ми, или исчезает один из элементов, а все остальное сортируется .... Можно просто застрелиться, когда ты новичек в этом деле ![]() ![]() Помогите пожалуйста!! Внизу последнее из моих усилий, но тоже не работает ![]() Там сначала идет вывод в StringGrid1, затем в StringGrid2 выводятся мах значения, а в StringGrid3 надо расположить отсортированный массив... Цитата procedure TForm1.Button1Click(Sender: TObject); var i,j,m,t,c:integer; begin randomize; for i:=1 to 5 do for j:=1 to 5 do begin mass [i,j]:=random(21); StringGrid1.cells[j-1,i-1]:=inttostr(mass[i,j]); end; for i:=1 to 5 do begin max[i]:=mass[i,1]; for j:=1 to 5 do begin if max[i]<mass[i,j] then begin max[i]:=mass[i,j]; end; end; end; for i:=1 to 5 do stringgrid2.Cells[0,i-1]:=inttostr(max[i]); for i:=1 to 5 do begin for j:=1 to 5 do begin a[j]:=mass[i,j]; end; if j=5 then begin for t:=1 to 5 do if a[t]<a[t+1] then begin c:=a[t]; a[t]:=a[t+1]; a[t+1]:=c; end; end; for m:=1 to 5 do stringgrid3.Cells[m-1,i-1]:=inttostr(a[i]); end; end; end. |
![]() ![]() |
![]() |
Текстовая версия | 15.07.2025 1:53 |