Задана матрица NxM, где 1 меньше n. Упорядочить элементы каждого нечетного столбца по убыванию, четного - по возрастанию
Категория: Delphi/Pascal
2012-01-05 22:26:17
code: #pascal
program PascalGuru; uses crt; var A:array[1..100,1..100] of integer; {переменная массива} i,j,m,n:integer; {переменные для циклов} B:array[1..100] of integer; {переменная массива} mm,ii:integer; swop:boolean; {***sort***} procedure exchange(var a,b:integer); {процедура обмена переменных } var c:integer; begin c:=a; a:=b; b:=c; end; {конец процедуры обмена переменных } {--------------------------------------------} begin write('M= '); readln (m); {считываем размер массива} write('N= '); readln (n); {считываем размер массива} writeln ('Vvedite elementy massiva A (>10): '); for i:=1 to m do for j:=1 to n do begin write ('A[',i,',',j,']='); readln (A[i,j]); end; {считываем элементы массива} clrscr; write ('Vot vvedennyi vami massiv A: '); for i:=1 to m do begin writeln; for j:=1 to n do write (A[i,j]:4,' '); end; {выводим массив на экран} for j:=1 to n do {проходим по всем столбцам} begin mm:=m; {задаём размер столбца временной переменной} repeat {---начало сортировки} swop:=false; for i:=1 to mm-1 do if odd(j) then {если столбец нечётный} begin if A[i,j][i+1,j] then {сортируем по убыванию} begin exchange(A[i,j],A[i+1,j]); swop:=true; end; end else {если столбец чётный} begin if A[i,j]>A[i+1,j] then {сортируем по возрастанию} begin exchange(A[i,j],A[i+1,j]); swop:=true; end; end; mm:=mm-1; until not swop; {***конец сортировки} end; writeln;writeln; write ('Vot otsortirovannyi massiv A: '); for i:=1 to m do begin writeln; for j:=1 to n do write (A[i,j]:4,' '); end; {выводим массив} readln; end.
Поделиться: