Составьте программу подсчета числа различных повторяющихся элементов массива C(M,P) — Pascal(Паскаль)

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

Leave a Comment

61 − 53 =