11.11.2019, 09:51
общий
это ответ
Здравствуйте, IvanDorohov!
Предлагаю такой вариант.
[code lang=pascal]var f:file of real;
g:file of integer;
x,y:real;
a,b,c,n,i,j:integer;
begin
//создадим файлы с неизвестным количеством элементов
//вещественный
assign(f,'fileF');
rewrite(f);
writeln('Вводите в файл вещественные числа, окончание ввода 0');
repeat
readln(x);
if x<>0 then write(f,x);
until x=0;
//целый
assign(g,'fileG');
rewrite(g);
writeln('Вводите в файл целые числа, окончание ввода 0');
repeat
readln(a);
if a<>0 then write(g,a);
until a=0;
writeln('Содержание исходного файла вещественных чисел');
reset(f);
while not eof(f) do
begin
read(f,x);
write(x,' ');
end;
writeln;
writeln('Содержание исходного файла целых чисел');
reset(g);
while not eof(g) do
begin
read(g,a);
write(a,' ');
end;
writeln;
//сортировка файла целых чисел для поиска срединного элемента(медианы)
reset(g);
for i:=0 to filesize(g)-2 do
for j:=i+1 to filesize(g)-1 do
begin
seek(g,i);
read(g,a);
seek(g,j);
read(g,b);
if a>b then
begin
seek(g,i);
write(g,b);
seek(g,j);
write(g,a);
end;
end;
writeln('Содержание отсортированого файла целых чисел');
reset(g);
while not eof(g) do
begin
read(g,a);
write(a,' ');
end;
writeln;
reset(g);
c:=filesize(g)div 2;
if odd(filesize(g))then //если размер файла нечетный
begin
seek(g,c); //медиана равна среднему элементу
read(g,n);
end
else //иначе
begin
seek(g,c);
read(g,a);
seek(g,c-1);
read(g,b);
n:=(a+b) div 2;//медиана равна полусумме двух центральных
end;
writeln('Значение срединного элемента=',n);
close(g);
//печатаем в обратном порядке элеметы после n
reset(f);
if filesize(f)<n-1 then write('В файле вещественных чисел не хватает чисел для печати')
else
begin
writeln('Элементы файла вещественных чисел с конца до номера ',n);
for i:=filesize(f)-1 downto n-1 do
begin
seek(f,i);
read(f,x);
write(x,' ');
end;
end;
close(f);
end.[/code]
5
Спасибо большое, посмотрю вечером на пк