16-08-2006, 05:22
|
|
|
|
חבר מתאריך: 15.08.06
הודעות: 465
|
|
אתה צריך גם לשמור אבל איזה מונה הוא של איזה מספר, כי צריך להחזיר גם את זה אחרי זה.
כתבתי משהו שיעבוד גם עבור הN הכי גדולים, רק צריך לשנות את הערכים.
קוד:
program bla;
uses crt;
type
new=record
val:integer;
times:integer;
end;
var
arr:array [1..100] of integer;
newarr:array [1..100] of new;
i,j,count:integer;
temp:integer;
function HowMuch(value:integer):integer;
begin
HowMuch:=0;
for count:=1 to 100 do
if value=arr[count] then
HowMuch:=HowMuch+1;
end;
procedure replace(a,b:integer);
begin
newarr[a].val:=newarr[a].val+newarr[b].val;
newarr[b].val:=newarr[a].val-newarr[b].val;
newarr[a].val:=newarr[a].val-newarr[b].val;
newarr[a].times:=newarr[a].times+newarr[b].times;
newarr[b].times:=newarr[a].times-newarr[b].times;
newarr[a].times:=newarr[a].times-newarr[b].times;
end;
begin
clrscr;
for i:=1 to 100 do
begin
newarr[i].val:=arr[i];
newarr[i].times:=HowMuch(arr[i]);
end;
for i:=1 to 99 do
for j:=1 to 99 do
if (newarr[j].times > newarr[j+1].times) then
replace(j,j+1);
writeln('The 3 most common are:');
writeln(newarr[100].val,':',newarr[100].times);
temp:=100-HowMuch(newarr[100].val);
writeln(newarr[temp].val,':',newarr[temp].times);
temp:=temp-HowMuch(newarr[temp].val);
writeln(newarr[temp].val,':',newarr[temp].times);
end.
_____________________________________
Any sufficiently advanced bug is indistinguishable from a feature
|