Составьте программу поиска чаще всего встречающегося элемента массива С(М,М)

Составьте программу поиска чаще всего встречающегося элемента массива С(М,М)
Гость
Ответ(ы) на вопрос:
Гость
{Attention! Это самое отвратное моё решение на Знаниях. Запаситесь валерьянкой перед прочтением кода} //Pascal ABC.NET 3.1 сборка 1219 Type  ty=record  valu:integer;  count:integer; end; Const  n=3;  Var  ma:array[1..n,1..n] of integer;  tyar:array of ty;  se:set of integer;  i,j,z,k,MaxCount:integer; begin  randomize;  se:=[];  k:=0;  MaxCount:=integer.MinValue;  writeln('Matrix:');  for i:=1 to n do   begin    for j:=1 to n do     begin      ma[i,j]:=random(-10,10);      write(ma[i,j]:4);      if not(ma[i,j] in se) then        begin        inc(k);        setlength(tyar,k+1);        tyar[k].valu:=ma[i,j];        tyar[k].count:=1;        se:=se+[ma[i,j]];       end      else        for z:=1 to k do {O(n^3) в худшем случае - нормальные люди ненавидят это}         if tyar[z].valu=ma[i,j] then          begin           inc(tyar[z].count);           break;          end;     end;    writeln;   end;   for i:=1 to k do   if MaxCount
Гость
Можно воспользоваться преимуществами, которые дает 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;   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 m= 10 89 11 84 46 18 68 56 13 28 34 86 25 84 34 51 13 37 41 26 23 33 74 87 21 11 42 61 42 32 65 34 37 47 23 24 20 61 14 93 31 71 27 19 31 81 94 38 87 74 83 19 74 81 28 70 24 23 72 44 76 17 24 80 62 10 58 78 71 19 40 52 33 48 94 51 16 64 65 40 16 13 74 68 48 56 60 56 28 53 99 97 88 69 27 23 57 46 57 31 33 Наиболее часто (4) встречаются значения: 23 74
Не нашли ответ?
Ответить на вопрос
Похожие вопросы