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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2011, 17:41   #1
skorpi
Пользователь
 
Регистрация: 24.12.2009
Сообщений: 11
По умолчанию Heapsort string в файле

Не могу отсортировать список фамилий по алфавиту пирамидальным способом, прежде, считав этот список из готового файла, затем, после сортировки, записать в другой файл.
Принцип, в общих чертах понял, а с реализацией кода строкового типа - застрял. Видимо заморочка с разными типами данных.
Заранее благодарю.


Код:
Program pir_sort;
Uses CRT;
Const n = 30;

Var a : array [1..n] of string;
    Size, i, j : byte;
    temp : string;
    Input, Output: text;   

  Procedure HeapSort(i, j : byte);
    Var
     new_elm : string;
     Child : byte;
     k : byte;

    Begin
      new_elm := a[size];
      While (i <= k div 2) do
        Begin
           Child := i*2;
           If (new_elm < a[child]) or (new_elm < a[child+1]) then
              If a[child+1]>a[child] then Inc(child);
                If new_elm > a[Child] then Break;
                   a[i] :=a[Child];
                   i := Child;
         End;
         a[i] := new_elm;
    End;

  Procedure Swap(var x,y : byte);
    Begin
      x := x xor y;  y := x xor y;  x := x xor y;
    end;

BEGIN
    Assign(Input, 'Input.txt');
    Assign(Output, 'Output.txt');
    Reset(Input);
    Rewrite(Output);

   While not (Eof(Input)) do
     Begin
       Inc (Size);
       Readln (Input, a[Size]);
     end;

   For i:= 1 to Size - 1 do
      For Size:= Size div 2 downto 1 do HeapSort(Size, n);

        Swap(a[1], a[Size+1]);
          For  Size := n - 1 downto 1 do

            Begin
              Swap(a[1], a[Size+1]);
              HeapSort(1, Size-1);
            End;

   For Size := 1 to n do Writeln(Output, a[Size]);
 Close(Output);
 Close(Input);

END.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 10.03.2011 в 22:46.
skorpi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
String большого размера, более 255 String[255] bitSoft Общие вопросы Delphi 9 28.03.2010 19:45
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57
String Chartvit Общие вопросы C/C++ 2 01.12.2009 18:04
БД в файле vitamin.rulez Помощь студентам 2 28.01.2009 17:20