Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2010, 21:42   #1
khorolpavel
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 25
По умолчанию Операции с файлами в Паскале.

Напишите, пожалуйста, два небольших участка кода при работе с файлами.

1-ый участок кода:
добавление элемента (числового) в отсортированный файл.
2-ой участок кода:
удаление элементов, равных эталонному из отсортированного файла.
Заранее спасибо, тем кто откликнится на мою просьбу.
khorolpavel вне форума Ответить с цитированием
Старый 03.09.2010, 20:21   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вставка числа на место, без нарушения порядка сортировки.

Код:
write('Какое число вставить в файл? b=');
readln(b);
reset(f);
{ищем позицию для вставки}
i:=0;
while not eof(f) do
 begin
  read(f,a);
  if a>=b then
   begin
    k:=i;
    break;
   end
  else i:=i+1;
  if i=filesize(f)-1 then k:=i+1;
 end;
close(f);
{вставляем}
reset(f);
for i:=filesize(f) downto k+1 do
 begin
  seek(f,i-1);
  read(f,a);
  seek(f,i);
  write(f,a);
 end;
seek(f,k);
write(f,b);
close(f);
puporev вне форума Ответить с цитированием
Старый 03.09.2010, 21:00   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Удаление всех равных эталонному, неважно сортированный файл, или нет.

Код:
write('Какое число удалить из файла? b=');
readln(b);
reset(f);
i:=0;p:=0;
while i<filesize(f)-1-p do{последний элемент пока не смотрим чтобы не выйти из файла}
 begin
  seek(f,i);
  read(f,a);
  if a=b then
   begin
    p:=p+1;
    for j:=i to filesize(f)-2-p do
     begin
      seek(f,j+1);
      read(f,a);
      seek(f,j);
      write(f,a);
    end
   end
  else i:=i+1;
 end;
seek(f,filesize(f)-p);{проверяем текущий последний}
read(f,a);
if a=b then p:=p+1;
seek(f,filesize(f)-p);{обрезаем файл}
truncate(f);
writeln('p=',p);
close(f);
puporev вне форума Ответить с цитированием
Старый 06.09.2010, 21:32   #4
khorolpavel
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 25
По умолчанию

Спасибо большое за код, помогли!!!
khorolpavel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операции с матрицами в паскале aKus Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2010 18:44
Несложные задачи на Паскале.Вычислительные операции,цикл,ветвление,массивы. Herenvarno Помощь студентам 16 14.01.2010 18:21
Операции над файлами СИ Stases Помощь студентам 2 27.12.2009 18:10
Операции над записями и типизированными файлами svt Помощь студентам 1 09.11.2009 00:19