![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Маленькая задачка
altex © (2007-01-04 19:06:00)имеется массив array of integer, в нем числа от 0 до 9, нужно узнать какое из них чаще всего встречается и сколько раз оно встречается?
Palladin (2007-01-06 13:36:00) [1]
> begin...end © (06.01.07 10:32) [6]
Видимо за то, что не учел, что элементов с максимальным количеством значений может быть несколько :)
SergP (2007-01-06 13:15:00) [2]> [7] ors_archangel © (06.01.07 10:50)
>
> > begin...end © (06.01.07 10:32) [6]
>
> Не обращай на него внимания, у него юмор такой :) Ещё надо
> было оптимизацию применить, что если после сканирования
> n/2 элементов какой-либо счётчик > n - i, то данное число
> - самое частое, дальше можно только его подсчитывать, а
> не все счётчики вообще
Это называется оптимизацией? :)
ors_archangel (2007-01-06 10:50:00) [3]
> begin...end © (06.01.07 10:32) [6]
Не обращай на него внимания, у него юмор такой :) Ещё надо было оптимизацию применить, что если после сканирования n/2 элементов какой-либо счётчик > n - i, то данное число - самое частое, дальше можно только его подсчитывать, а не все счётчики вообще
begin...end (2007-01-06 10:32:00) [4]> Belorus © (05.01.07 21:59) [5]
Смотрел на свой код. Долго думал. Увы, так и не понял, за что именно мне должно быть стыдно.
Belorus (2007-01-05 21:59:00) [5]> [3] Palladin © (04.01.07 19:22)
Зачот... Весьма стёбно...
А вот
> [2] begin...end © (04.01.07 19:18)
должно быть стыдно за такой код...
altex (2007-01-04 19:30:00) [6]Пасиба товарищи, у меня просто сессия, сижу лекции по линейке учу... в перерывах чтото делаю!
Palladin (2007-01-04 19:22:00) [7]
Procedure dummy001(Const a:Array of Integer);
var
i:integer;
s:String;
c:array [0..9] of integer;
m:Integer;
Begin
ZeroMemory(@c,sizeof(c));
for i:=0 to length(a)-1 do inc(c[a[i]]);
m:=c[0];
for i:=1 to 9 do if c[i]>m Then m:=c[i];
s:='Количество '+IntToStr(m)+', число(а):';
for i:=0 to 9 do
if c[i]=m then s:=s+IntToStr(i)+',';
SetLength(s,Length(s)-1);
ShowMessage(s);
End;
procedure button1click;
var
a:array of integer;
i:Integer;
begin
randomize;
setlength(a,random(5000)+1000);
for i:=0 to length(a)-1 do a[i]:=random(10);
dummy001(a);
end;
begin...end (2007-01-04 19:18:00) [8]Оплата, надеюсь, натурой?
const
A: array [1..15] of Integer = (1, 2, 3, 2, 4, 4, 2, 2, 7, 8, 3, 1, 2, 4, 9);
var
B: array [0..9] of Integer;
I, N: Integer;
begin
FillChar(B, sizeof(B), 0);
for I := Low(A) to High(A) do
Inc(B[A[I]]);
N := 0;
for I := Low(B) + 1 to High(B) do
if B[I] > B[N] then
N := I;
ShowMessageFmt('Число %d встречается чаще всего -- %d раз(а)', [N, B[N]])
end
MetalFan_pda (2007-01-04 19:17:00) [9]а самому подумать?
а мы подкорректируем если что ;)