Дана целочисленная матрица размера M x N. вывести номер ее первой строки, содержащей максимальное количество одинаковых элементов — Pascal(Паскаль)

uses crt;
const nmax=20;//макс. размеры матрицы
type mas=array[1..nmax] of integer;//массив-строка матрицы
    matr=array[1..nmax] of mas;//матрица-массив строк
function Odin(v:mas;n:byte):byte;//подсчет одинаковых
var i,j,k,mx:byte;
begin
mx:=0;
for i:=1 to n do//проверим все элементы
 begin
  k:=0;//количество каждого
  for j:=1 to n do
  if v[i]=v[j] then k:=k+1;//если повтор, считаем
  if k>mx then mx:=k;//если больше чем до этого, это макс. количество
 end;
Odin:=mx;//значение функции
end;
var a:matr;
    m,n,i,j,imx,mx:byte;
begin
clrscr;
randomize;
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to m do
 begin
   for j:=1 to n do
    begin
     a[i,j]:=random(8);//маленький диапазон, чтобы были повторы
     write(a[i,j]:3);
    end;
   writeln;
 end;
writeln;
mx:=1;
imx:=1;
for i:=1 to m do
if Odin(a[i],n)>mx then
 begin
  mx:=Odin(a[i],n);
  imx:=i;
 end;
if mx=1 then write('Одинаковых элементов в строках нет!')
else 
 begin
  writeln('Номер первой строки, содержащей наибольшее количество одинаковых=',imx);
  write('Их количество=',mx);
 end;
readln
end.

Leave a Comment

+ 40 = 49