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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 23:23   #1
Neroaz
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 36
По умолчанию Сортировка в типизированном файле в Delphi

Код:
AssignFile(F,'a.dat'); AssignFile(F2,'b.dat');
Reset(F); Rewrite(F2);
for i:=FileSize(F)-1 downto 0 do
  for j:=0 to i do
    begin
      Read(F,ie);
      if ie.Surname[i-1]>ie.Surname[i] then
      begin
      Seek(F,FilePos(F)-2);
      write(F2,ie) else ...
end;
end;
end;
Как дальше не знаю, подскажите.

Последний раз редактировалось Stilet; 08.04.2010 в 10:09.
Neroaz вне форума Ответить с цитированием
Старый 08.04.2010, 00:33   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Обязательно в файле надо? Пример сортировки по возростанию в одном файле паскалевским методом в консоле:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  data = record
    Surname: string[20];
    //...
  end;
var
  f: file of data;
  ie, ie2: data;
  i, j, k: integer;
begin
  //создание нового файла и вывод его на экран
  assignfile(f, 'a.dat');
  rewrite(f);
  for i := 1 to 10 do
  begin
    ie.Surname := 'name ' + inttostr(random(100));
    writeln(ie.Surname);
    write(f, ie)
  end;
  closefile(f);
  writeln;
  //сортировка внутри файла
  reset(f);
  for i := 0 to filesize(f) - 1 do begin
    seek(f, i);
    read(f, ie);
    k := i;
    for j := i + 1 to filesize(f) - 1 do begin
      read(f, ie2);
      if ie.Surname > ie2.Surname then begin
        k := j;
        ie := ie2
      end
    end;
    seek(f, k); read(f, ie2);
    seek(f, i); read(f, ie);
    seek(f, k); write(f, ie);
    seek(f, i); write(f, ie2)
  end;
  closefile(f);
  //вывод отсортированного файла
  writeln;
  reset(f);
  while not eof(f) do
  begin
    read(f, ie);
    writeln(ie.Surname)
  end;
  closefile(f);

  readln
end.
eoln вне форума Ответить с цитированием
Старый 08.04.2010, 00:44   #3
Neroaz
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 36
По умолчанию

Да обязательно.
Спасибо большое все получилось, но нам показывали короче вариант.
P.S. Поставлю +
Neroaz вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка записей в типизированном файле Faina Помощь студентам 2 26.03.2010 17:28
сохранение инфо в типизированном файле prostac Помощь студентам 2 23.11.2009 14:55
процедура вывода и нахождения массивов, находящихся в типизированном файле квак Помощь студентам 1 28.04.2009 15:08
отсортировать информацию обменом в типизированном файле rainbow Помощь студентам 6 07.03.2009 09:26
Расчет числа строк в типизированном файле 1234 Паскаль, Turbo Pascal, PascalABC.NET 6 20.05.2008 11:14