Можно воспользоваться преимуществами, которые дает Pascal 3.1 и программа будет достаточно короткой.
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016 begin var m:=ReadInteger('m='); var c:=MatrixRandom(m,m,10,99); var d:=new Dictionary<integer,integer>; for var i:=0 to m-1 do begin for var j:=0 to m-1 do Print(c[i,j]); Println; end; foreach var e in c do d[e]:=d.Get(e)+1; var q:=d.OrderByDescending(x->x.Value); var p:=q.First.Value; if p=1 then Writeln('Все значения в массиве уникальны') else begin var s:=q.TakeWhile(x->x.Value=p).Select(x->x.Key); Write('Наиболее часто (',p,') '); if s.Count=1 then begin Print('встречается значение'); s.Print end else begin Print('встречаются значения:'); s.Println end end end.
Тестовые решения
m= 3 76 34 96 47 99 79 94 33 11 Все значения в массиве уникальны
m= 5 43 19 46 70 51 73 46 50 18 25 19 10 32 83 81 32 46 81 23 84 27 91 84 79 28 Наиболее часто (3) встречается значение 46