В заданной матрице A(n,m) найти количество различных по значению элементов в каждом столбце . затем представить столбцы по убыванию найденных значений . результат напечатать — Pascal(Паскаль)

uses crt;
const nmax=20;
var a:array[1..nmax+1,1..nmax] of integer;
    n,m,i,j,k,p:byte;
    x:integer;
begin
clrscr;
randomize;
repeat
write('Количество строк=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов=');
readln(n);
until n in [1..nmax];
for i:=1 to m do
for j:=1 to n do
a[i,j]:=random(8);
{подсчет количества разных в столбцах}
for j:=1 to n do
 begin
  k:=m;{пока все разные}
  for i:=1 to m-1 do{идем вниз по столбцу}
  for p:=i+1 to m do{смотрим элементы, которые ниже}
  if a[i,j]=a[p,j] then{если есть такой}
    begin
     k:=k-1;{вычитаем 1}
     break;{дальше не смотрим}
    end;
  a[m+1,j]:=k;{результат записываем в дополнительную строку}
 end;
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  write(' ':9);
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
write('Кол.разн.');
for i:=1 to n do
write(a[m+1,i]:4);
writeln;
writeln;
{сортируем строки матрицы=переставляем столбцы}
for j:=1 to n-1 do
for p:=j+1 to n do
if a[m+1,j]<a[m+1,p] then{по убыванию элементов в дополнительной строке}
for i:=1 to m+1 do {соответственно переставляем элементы во всех строках}
 begin
  x:=a[i,j];
  a[i,j]:=a[i,p];
  a[i,p]:=x;
 end;
writeln('Перестановка столбцов по убыванию количества разных элементов в них:');
for i:=1 to m do
 begin
  write(' ':9);
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
write('Кол.разн.');
for i:=1 to n do
write(a[m+1,i]:4);
readln
end.

Leave a Comment

48 + = 54