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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2011, 10:55   #1
Андрюха_ЕШКО
Пользователь
 
Аватар для Андрюха_ЕШКО
 
Регистрация: 09.01.2011
Сообщений: 22
По умолчанию Сортировка

Мне нужно составить программу на Паскале для сортировки типизированного файла...

кто поможет?
Я когда нибудь вам тоже помогу....
Андрюха_ЕШКО вне форума Ответить с цитированием
Старый 27.02.2011, 11:12   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

прежде всего, Вам нужно решить, есть ли ограничения на размер этого самого файла. Если допустить, что содержимое файла полностью помещается в оперативную память, тогда грузите файл в переменную (либо статическую - обычный массив, либо динамическую - динамический массив или связный список) и сортируете любым удобным способом - хоть банальным "пузырьком", хоть QuickSort'ом.

Если же по условиям задачи содержимое файла не может быть полностью прочитано в память компьютера, тогда сложнее - либо использовать достаточно эффективные алгоритмы внешней сортировки, либо придумывать что-то попроще - но ОЧЕНЬ неэффективное.

p.s. и поищите по форуму. Такие задачи здесь уже решались...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.02.2011, 14:19   #3
Андрюха_ЕШКО
Пользователь
 
Аватар для Андрюха_ЕШКО
 
Регистрация: 09.01.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
прежде всего, Вам нужно решить, есть ли ограничения на размер этого самого файла.
Любое решение мне надо... Без разницы...
Спасибо!
Я когда нибудь вам тоже помогу....
Андрюха_ЕШКО вне форума Ответить с цитированием
Старый 27.02.2011, 14:50   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Считать файл сможешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.02.2011, 15:59   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Считать файл сможешь?
Виталий, это Вы мне?! Смогу!

Андрюха_ЕШКО, на, лови, пользуйся, пока я добренький..
Код:
program SrtTyped;

Const MaxN = 1000;
   FileName = 'fInput.int';
 
var
  A : array[1..MaxN] of integer;
  n : integer;
  fInt : file of integer;

procedure CreateIntegerFile;
var i, k1 : integer;
begin
  WriteLn('Введите N: '); 
  Readln(n);

  if (n<1) or (n>MaxN) then begin
     WriteLn('N неверное! Должно быть от 1 до ',MaxN);
     WriteLn;
     WriteLn('Для завершения программы нажмите Enter...');
     readln;
     Halt(1);
  end;

  Assign(fInt, FileName);
  Rewrite(fInt);
  Randomize;

  for i:=1 to N do begin
    k1 := Random(5000);
    Write(fInt, k1);
  end;

  Close(fInt); 

end;


procedure LoadData;
var  i  : integer;
begin
  Assign(fInt, FileName);
  Reset(fInt);

  N := FileSize(fInt);
  WriteLn('В исходном файле обнаружено записей: ',N);
  if N>MaxN then begin
     WriteLn('Файл слишком большой - обрабатывать не будем!');
     WriteLn;
     WriteLn('Для завершения программы нажмите Enter...');
     readln;
     Halt(1);
  end;
  
  for i := 1 to N do 
    Read(fInt, A[i]);

  Close(fInt);
end;

procedure Sort;
var  i, j, OneS, IndexMin : integer;
begin
  {а вот теперь начинаем сортировку.
     методом "пузырька" - как самым простым}
     

  {Выбирается минимальный элемент массива
  и меняется местами с первым элементом массива.
  Затем процесс повторяется с оставшимися элементами и т. д. }

  for i:=1 to N-1 do begin
    IndexMin := i; {предварительно считаем, что первый элемент наименьший}
    {ищем индекс максимального элемента}
    for j:=i+1 to N do
      if A[j]<A[IndexMin] then IndexMin := j;

    {меняем местами элементы массива с индексами i и IndexMin
    (ну, если они не равны, конечно) }
    if i<>IndexMin then begin
      OneS := A[IndexMin];
      A[IndexMin] := A[i];
      A[i] := OneS;
    end;
  end;
end;

procedure PrintArray;
var i : integer;
begin
  writeln('Массив: ');
  for i := 1 to N do write(A[i]:5, ' ');
  WriteLn;
  WriteLn('Для продолжения нажмите Enter...');
  readln;
end;

procedure SaveIntegerFile;
var i  : integer;
begin
  Assign(fInt, FileName); 
  Rewrite(fInt);  
  for i:=1 to N do
      write(fInt,A[i]); 
  close(fInt); 
end;


begin
  { убрать комментарий для создания файла!
     CreateIntegerFile; }
  LoadData;
  PrintArray;
  Sort;
  PrintArray;
  SaveIntegerFile;
end.

Последний раз редактировалось Serge_Bliznykov; 27.02.2011 в 16:02.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.02.2011, 16:12   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Смогу!
ШутникЪЪЪ )))
а жаль таки что автор не ответил...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.02.2011, 21:09   #7
Андрюха_ЕШКО
Пользователь
 
Аватар для Андрюха_ЕШКО
 
Регистрация: 09.01.2011
Сообщений: 22
Радость

Цитата:
Сообщение от Stilet Посмотреть сообщение
Считать файл сможешь?
Непонял??

Serge_Bliznykov Спасибо огромное!
Я когда нибудь вам тоже помогу....
Андрюха_ЕШКО вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32