Программа


PROGRAM SortText;
Const MaxLenText=100; { Максимальная длина текста в строках }
TYPE TextArray=array [1..MaxLenText] of string; { Тип - массив текста }
     TypeText=record  { Тип - представление текста }
                Len:0..MaxLenText; { Фактическая длина текста }
                Text:TextArray; { Текст }
              end;
PROCEDURE ReadText(InFileName:string; var T:TypeText; var Error:boolean);
{ Процедура чтения текста из файла
  InFileName - имя файла; T - текст; Error - флаг ошибки }
  Var F:text; { Файловая переменная для ввода текста }
  Begin
    Assign(F,InFileName); { Связывание файловой переменной с именем файла }
    Reset(F); { Открытие файла для чтения }
    Error:=FALSE; { Сброс флага ошибки }
    T.Len:=0; { Сброс количества строк текста }
    while not Error and not EOF(F) do  { Цикл чтения файла }
    begin
      T.Len:=T.Len+1; { Набор количества строк }
      ReadLn(F,T.Text[T.Len]); { Чтение строки текста }
      Error:=(T.Len=MaxLenText) and not EOF(F)
        { Проверка превышения длины файла над максимально допустимым значением }
    end;
    Close(F)  { Закрытие файла }
  End;
PROCEDURE WriteText(OutFileName:string; var T:TypeText);
{ Процедура записи текста в файл
  OutFileName - имя файла; T - текст }
  Var F:text; { Файловая переменная для вывода текста }
      i:0..MaxLenText; { Счетчик строк текста }
  Begin
    Assign(F,OutFileName); { Связывание файловой переменной с именем файла }
    Rewrite(F); { Открытие файла для записи }
    WriteLn(F,'Количество строк текста ',T.Len); { Вывод количества строк текста в файл }
    for i:=1 to T.Len do { Цикл вывода текста в файл }
      WriteLn(F,T.Text[i]); { Вывод строки в файл }
    Close(F)  { Закрытие файла }
  End;
PROCEDURE Sort(var T:TypeText); { Процедура сортировки текста. T - текст }
  Var i,j:1..MaxLenText; { Счетчики строк }
      Min:1..MaxLenText; { Указатель на минимальный элемент в неотсортированной части массива }
      S:string; { Вспомогательная переменная для перестановки строк текста }
  Begin
    if T.Len<>0 then
      for i:=1 to T.Len-1 do { Цикл сортировки текста }
      begin
        Min:=i; { Начальное определение номера минимального элемента
                  в неотсортированной части массива }
        for j:=i+1 to T.Len do { Цикл перебора неотсортированной части массива
                                 с поиском минимального элемента }
          if T.Text[Min]>T.Text[j] { Сравнение минимального элемента с текущим }
          then Min:=j;  { Переопределение минимального элемента }
        if Min<>i then { Проверка необходимости перестановки элементов }
        begin { Перестановка первого элемента с минимальным из
                неотсортированной части массива: }
          S:=T.Text[Min];
          T.Text[Min]:=T.Text[i];
          T.Text[i]:=S
        end;
      end;
  End;
VAR InFileName, OutFileName:string; { Имена входного и выходного файлов }
    T:TypeText; { Представление текста в программе }
    Error:boolean; { Флаг ошибки }
BEGIN
  WriteLn; { Пропуск строки }
  Write('Введите имя исходного файла текста '); { Вывод приглашения }
  ReadLn(InFileName); { Чтение имени исходного файла }
  ReadText(InFileName,T,Error); { Чтение текста }
  if Error { Выбор при обнаружении ошибки }
  then WriteLn('ОШИБКА ВО ВХОДНЫХ ДАННЫХ!') { Вывод сообщения об ошибки }
  else begin
         Sort(T); { Сортировка текста }
         (*Write('Введите имя файла результата сортировки текста '); { Вывод приглашения }
         ReadLn(OutFileName); { Чтение имени файла } *) OutFileName:='049.srt';
         WriteText(OutFileName,T); { Вывод файла }
       end
END.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию