var
f: file of real;
{ Функция возращает кол-во чисел равные num }
function QNumberInFile( num: real ): integer;
var
pos: integer; { Для того чтобы запомнить позицию в файле при входе }
r: real; { Промежуточная переменная }
k: integer; { Кол-во чисел num }
begin
pos:=FilePos( f );
k:=0;
Seek( f, 0 );
while not eof( f ) do
begin
read( f, r );
if r = num then
Inc( k );
end;
Seek( f, pos );
QNumberInFile:=k;
end;
{-------------------------------------}
var
r, rmax: real;
n, i, max: integer;
begin
randomize;
Assign( f, 'Real.fil' );
ReWrite( f );
write('Enter n -> ');
readln( n );
for i:=1 to n do { Вывод и инициализация ряда }
begin
r:=Random( 5 ) / ( random( 5 ) + 1 );
write( f, r );
writeln( r:2:2 );
end;
Close( f );
Reset( f );
{------Находим моду---------}
read( f, r ); { Будем считать что первое число есть мода }
rmax:=r;
max:=QNumberInFile( r );
while not eof( f ) do { Перебираем все числа }
begin
read( f, r );
n:=QNumberInFile( r );
if n > max then
begin
rmax:=r;
max:=n;
end;
end;
Close( f );
Writeln( 'Moda = ', rmax:2:0 );
Writeln( 'Kol-vo povtorenei = ', max );
Readln;
end.
мода выборки
Заданы N действительных чисел. Составить программу вычисления моды (наиболее часто встречающегося числа). НЕЛЬЗЯ использовать счетчики и сортировку!!! Помогите, кто знает как реализовать.
Я думаю что задачу можно решить только с файломи.