Źle pomyślałem. Przepraszam. Zrób to tak. Tutaj zamiast wczytywania z pliku jest losowanie, ale to nie powinno znacznie wpłynąć na prędkośc programu. Wykona się on jak podejrzewam w góra kilkadziesiąt milisekund. Teraz całośc jak pokazuje mi poniższy kod wykonuje się w zero milisekund, a więc samo ustalenie najczęściej występującej liczby również zajmie tyle co nic.
program a;
{$APPTYPE CONSOLE}
uses
Windows;
var
I, R, Max : integer;
Start, Stop : Cardinal;
Arr : array[1..100] of Word;
begin
Start := GetTickCount;
Randomize;
for I := Low(Arr) to High(Arr) do
begin
Arr[I] := 0;
end;
for I := 1 to 2048 do
begin
R := Random(100) + 1;
Arr[R] := Arr[R] + 1;
end;
Max := 0;
for I := Low(Arr) to High(Arr) do
begin
if Arr[I] > Max then
begin
R := I;
Max := Arr[I];
end;
end;
Stop := GetTickCount;
Writeln('Najczesciej wystepuje liczba: ', R);
Writeln('Program wykonal sie w: ', Stop - Start, ' ms.');
Readln;
end.
EDIT: nawet z zapisem do pliku i odczytem z niego. Trwa to u mnie zero milisekund. Fakt, że mam proces cztero rdzeniowy, a komputer nie ma jeszcze roku, ale nawet na wolniejszej maszynie i nie pod Windowsem siedem, podejrzewam że dla Delphi 7, wyniki będą takie same.
program a2;
{$APPTYPE CONSOLE}
uses
Windows;
const
AFileName = 'D:\digits.txt';
var
S : string;
F : TextFile;
I, R, Max : integer;
Start, Stop : Cardinal;
Arr : array[1..100] of Word;
begin
Start := GetTickCount;
Randomize;
AssignFile(F, AFileName);
Rewrite(F);
for I := 1 to 2048 do
begin
R := Random(100) + 1;
Writeln(F, R);
end;
for I := Low(Arr) to High(Arr) do
begin
Arr[I] := 0;
end;
Reset(F);
while not EOF(F) do
begin
Readln(F, S);
Val(S, I, R);
if R = 0 then
begin
Arr[I] := Arr[I] + 1;
end;
end;
CloseFile(F);
Max := 0;
for I := Low(Arr) to High(Arr) do
begin
if Arr[I] > Max then
begin
R := I;
Max := Arr[I];
end;
end;
Stop := GetTickCount;
Writeln('Najczesciej wystepuje liczba: ', R);
Writeln('Program wykonal sie w: ', Stop - Start, ' ms.');
Readln;
end.