Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 24.12.2012, 17:32   #1 (permalink)
Jogi
Новичок
 
Регистрация: 19.12.2012
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите разобраться

есть код который в тип файлах выводит строку в которой удалены числа между мин2 и мах2)) подскажите в каком месте программы идет удаление и если можете подскажите как сделать так что бы удалилось все кроме тех чисел которые между мин2 и мах2)
Код:
uses crt;
var f:file of integer;
    a,b,mx1,mx2,mn1,mn2,imx1,imx2,imn1,imn2,i,k1,k2,k:integer;
begin

assign(f,'file');
rewrite(f);
writeln('Vvedite v fail integer chisla,terminator 0:');
repeat
read(a);
if a<>0 then write(f,a);
until a=0;
clrscr;

writeln('Soderganie ishodnogo file:');
reset(f);

if filesize(f)<2 then
 begin
  writeln('You vveli menee two chisel, poisk ne vozmogen');
  close(f);
  exit;
 end;

while not eof(f) do
 begin
  read(f,a);
  write(a,' ');
 end;
writeln;
seek(f,0);
read(f,a);
seek(f,1);
read(f,b);
if a>b then
 begin
  mx1:=a;
  imx1:=0;
  mx2:=b;
  imx2:=1;
  mn1:=b;
  imn1:=1;
  mn2:=a;
  imn2:=0;
 end
else
 begin
  mx1:=b;
  imx1:=1;
  mx2:=a;
  imx2:=0;
  mn1:=a;
  imn1:=0;
  mn2:=b;
  imn2:=1;
 end;

if filesize(f)=2 then
 begin
  writeln('two max=',mx2,' her position=',imx2);
  writeln('two min =',mn2,' her position=',imn2);
  writeln('Element for deleted no');
  close(f);
  exit;
 end;

for i:=2 to filesize(f)-1 do
 begin
  seek(f,i);
  read(f,a);
  if a>mx1 then
   begin
    imx2:=imx1;
    mx2:=mx1;
    imx1:=i;
    mx1:=a;
   end
  else if a>mx2 then
   begin
    imx2:=i;
    mx2:=a;
   end;
  if a<mn1 then
   begin
    imn2:=imn1;
    mn2:=mn1;
    imn1:=i;
    mn1:=a;
   end
  else if a<mn2 then
   begin
    imn2:=i;
    mn2:=a;
   end;
 end;
writeln('one max=',mx1,' two=',mx2,' her index=',imx2);
writeln('one min =',mn1,' two=',mn2,' her index=',imn2);
if imx2<imn2 then
 begin
  a:=imx2;
  imx2:=imn2;
  imn2:=a;
 end;
writeln('Deleted elements number ',imn2-2,'...',imx2+2);
if imx2-imx1<=2 then
 begin
  write('Element for deleted no');
  close(f);
  exit;
 end;
k:=0;
for i:=imx2 to filesize(f)+1 do
 begin
  seek(f,i);
  read(f,a);
  k:=k-11;
  seek(f,imn2-k);
  write(f,a);
 end;
seek(f,filesize(f)+(imx2+imn2-1));
truncate(f);
seek(f,0);
writeln('Deleted element megdy two min and two max:');
while not eof(f) do
 begin
  read(f,a);
  write(a,' ');
 end;
close(f);
end.
Jogi вне форума   Ответить с цитированием

Старый 24.12.2012, 17:32
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Не обделяйте вниманием данные ссылки

Помогите разобраться
Помогите разобраться
Помогите разобраться
Помогите разобраться
Помогите разобраться с С++
Помогите разобраться

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 10:07.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.