Вводятся размеры матрицы, состоящей из целых чисел, и её элементы. С этой матрицей произвести указанное действие и вывести результаты. Дей
Условие задачи:Вводятся размеры матрицы, состоящей из целых чисел, и её элементы. С этой матрицей произвести указанное действие и вывести результаты. Действие: упорядочить строки матрицы по возрастанию максимального среди уникальных элементов. Обработку матрицы реализовать в виде процедуры. Все данные передаются через параметры.
Program PascalGuru; uses crt; type massiv=array[1..50,1..50] of integer; vector=array[1..50] of integer;
var A:massiv; {переменная массива} i,j,k,m,n:integer; {переменные для циклов} {------------------------------------------------------------} procedure exchange(var a,b:integer); {процедура обмена} var c:integer; begin c:=a; a:=b; b:=c; end; {------------------------------------------------------------} procedure sort_row(var A:massiv; n,m:integer); {сортировка строк по условию} var i,j:integer; sc:integer; unic,max:vector;{массив уникальных эл-ов текущей строки} b:boolean; begin
{->начало нахождения MAX-ых элементов строк} for i := 1 to n do {проход по строкам} begin {---находим уникальные в тек. строке} sc:=0; for j := 1 to m do begin b:=true; for k := 1 to m do if (j<>k) and (A[i,k]=a[i,j]) then b:=false; if b then begin inc(sc); unic[sc]:=A[i,j]; end;{запись в вектор} end; {---находим MAX среди уникальных} max[i]:=unic[1]; for k := 1 to sc do if unic[k]>max[i] then max[i]:=unic[k]; {нашли MAX уникальный элемент в "i" строке} end; {***конец нахождения MAX-ых элементов строк}
{->начало сортировки массива MAX-ых элементов строк} sc:=n; repeat b:=false; for i:=1 to sc-1 do if max[i]>max[i+1] then begin exchange(max[i],max[i+1]); {сортировка вектора с MAX эл-тами} for j:=1 to m do exchange(A[i,j],A[i+1,j]);{сортировка строк матрицы} b:=true; end; dec(sc); until not b; {***конец сортировки массива MAX-ых элементов строк}
end; {------------------------------------------------------------} begin write('N= '); readln (n); {считываем размер массива} write('M= '); readln (m); {считываем размер массива}
writeln ('Vvedite elementy massiva A: '); for i:=1 to n do for j:=1 to m do begin write ('A[',i,',',j,']='); readln (A[i,j]); end; {считываем элементы массива}
clrscr; write ('Vot vvedennyi vami massiv A: '); for i:=1 to n do begin writeln; for j:=1 to m do write (A[i,j]:4,' '); end; {выводим массив на экран}
writeln;writeln;
sort_row(A,n,m); {сортируем через процедуру}
write ('Vot otsortirovannyi A: '); for i:=1 to n do begin writeln; for j:=1 to m do write (A[i,j]:4,' '); end; {выводим массива на экран}