Цитата:
Сообщение от grisha2207
Помогите с задачей я даже идею придумать не могу
Дан массив целых чисел длинной n в котором числа могут повторятся.Найти наиболее часто встречающееся число.Если таких чисел несколько то определить наименьшее из них
P.S Сортировать элементы массива мы якобы не умеем.
Через Паскаль
|
Получите:
Код:
Const
N=16;
Var
A,B,Num:Array[1..N] of Byte;
i,j,M,Max_num,Min,Imin,Q:Byte;
Mn:Set of Byte;
Begin
for i:=1 to N do B[i]:=0;
Mn:=[];
M:=0;
Randomize;
for i:=1 to N do
begin
A[i]:=Random(N div 2);
write(A[i]:4);
end;
writeln;
writeln;
for i:=1 to N do
begin
if Not(A[i] in Mn) then
begin
Inc(M);
Mn:=Mn+[A[i]];
Num[M]:=0;
B[M]:=A[i];
for j:=i to N do
if A[i]=A[j] then Inc(Num[M]);
end;
end;
for i:=1 to M do
writeln(B[i],' - ',Num[i],' times');
writeln;
Max_num:=0;
for i:=1 to M do
if Num[i]>Max_num then Max_num:=Num[i];
Min:=N;
Q:=0;
for i:=1 to M do
if Num[i]=Max_num then
begin
write(B[i]:4);
Inc(Q);
end;
writeln(' - ',Max_num,' times');
writeln;
if Q>1 then
begin
for i:=1 to M do
if (Num[i]=Max_num) and (B[i]<Min) then
begin
Min:=B[i];
Imin:=i;
end;
writeln(B[Imin]:4,' - minimal');
end;
Readln
End.
Interacia, оставляю свой вариант только потому, что Ваш несколько недоделан: не отработана ситуация, когда максимальное число повторений встречается не для одного, а для нескольких значений элементов массива. Между прочим, это сильно усложняет задачу. Но, увы, впрямую оговорено условием. Более того, предписано из таких значений найти наименьшее.
P.S. Вообще-то обычно я в таких случаях (если кто-то из коллег-программистов меня "опередил") свой пост ликвидирую. Но здесь, повторяю, случай особый.