1

Тема: Як правельно зробити впорядкування двовимірного масиву?

Задана матриця Y(n,n) ,n<15. Розробити програму, яка упорядковує за спаданням елементи всіх стовпчиків, у яких розміщені найбільші за модулем елементи матриці Y(n,n).

Var
Y : array[0..15,0..15]of integer;
t : array[0..15]of integer;
i,j,m,n,k :integer;

begin
write('Розмір масиву Y(n,n) (n<=15): ');
readln(n);
randomize;
for i := 1 to n do begin
    for j := 1 to n do
        Y[i][j]:=random(20);
end;
writeln;
writeln('Masiv Y: ');
for i := 1 to n do begin
    for j := 1 to n do
    write(Y[i][j], ' ');
    writeln;
end;

for i:=1 to n do begin
    for k:=1 to n-1 do begin
      if (Y[i][k] < Y[i][k+1]) then begin
        t[k] := Y[i][k];
        Y[i][k] := Y[i][k + 1];
        Y[i][k+1] := t[k];
      end;
    end;
  end;

  writeln('Відсортований масив:');
  for i:=1 to n do begin
      for j := 1 to n do
    write(Y[i][j],' ');
    writeln;
  end;

readln;
end.
Подякували: ProgramBandera1

2

Re: Як правельно зробити впорядкування двовимірного масиву?

Я бачу якусь задачу і якийсь код, але не бачу запитання. Що саме у вас не виходить зробити?

Подякували: ProgramBandera1

3

Re: Як правельно зробити впорядкування двовимірного масиву?

Torbins написав:

Я бачу якусь задачу і якийсь код, але не бачу запитання. Що саме у вас не виходить зробити?

В мене некоректно працює сортування, я не розумію як його написати.  З одновимірним все нормально виходить,  а з двовимірним не дуже.

for i:=1 to n do begin
    for k:=1 to n-1 do begin
      if (Y[i][k] < Y[i][k+1]) then begin
        t[k] := Y[i][k];
        Y[i][k] := Y[i][k + 1];
        Y[i][k+1] := t[k];
      end;
    end;
  end;

4

Re: Як правельно зробити впорядкування двовимірного масиву?

Єдиного "двовимірного сортування" не існує. Існує сортування двовимірного масиву:
- як одномірного, де кінці рядків "склеєні" з початком наступного;
- окремо по рядках, а потім самих рядків за якоюсь ознакою - максимальним, мінімальним, чи середнім;
- попередні два пункти по стовпчиках;
- по діагоналях, знову ж таки можна придумувати різні додаткові правила;
- та й узагалі, як душі заманеться.
Просто для одновимірного масиву ясно, що елемент з номером 3 має бути перед елементом з номером 4; а от для двовимірного не існує єдиного правила, яке б впорядковувало елементи (1,2), (2,2) і (2,1). Спершу визначіться, як саме ви хочете сортувати масив, а потім сортуйте, інакше нічого не вийде.

Подякували: leofun01, Ironwill2

5

Re: Як правельно зробити впорядкування двовимірного масиву?

Ironwill
Судячи з умови, вам і не треба весь масив сортувати, а лише окремі стовпчики, які обираються за певною ознакою.

Подякували: Ironwill, leofun012

6

Re: Як правельно зробити впорядкування двовимірного масиву?

Torbins написав:

Ironwill
Судячи з умови, вам і не треба весь масив сортувати, а лише окремі стовпчики, які обираються за певною ознакою.

У мене зовсім не виходить впорядкувати, вроді як правельно, але не працює належним чином...

for i := 0 to n-1 do
  begin
    for j := 0 to n-1 do
      begin
        if(Y[j][i]< Y[j][i+1]) then
        begin
          min := Y[j][i];
          Y[j][i] := Y[j][j+1];
          Y[j][i+1] := min;
        end;
      end;
  end;

7

Re: Як правельно зробити впорядкування двовимірного масиву?

Уже не потрібно я все зробив, дякую.

while k <= n do
begin
for i := 0 to n-1 do
  begin
    for j := 0 to n-1 do
      begin
        if(Y[j][i] < Y[j+1][i]) then
        begin
          t := Y[j][i];
          Y[j][i]:= Y[j+1][i];
          Y[j+1][i]:= t;
        end;
      end;
  end;
  k:=k+1;
end;

8

Re: Як правельно зробити впорядкування двовимірного масиву?

Прихований текст

Питання «як правельно?» саме по собі геніальне.