Программа


Program Task2;
{ Поиск пар чисел с максимальным
  и минимальным модулями разности }
Uses Mod_23_2;              { Подключение модуля }
Var Data:DataType;          { Описание переменной данных }
    Max1,Max2:integer;      { Переменные с наибольшим модулем разности }
    Min1,Min2:integer;      { Переменные с наименьшим модулем разности }
    DeltaMin:integer;       { Буферная переменная модуля наименьшей разности }
    i,iBuf:integer;         { Счетчик и буфер счетчика }
    FileName:string[79];    { Имя файла }
    Out:text;               { Файловая переменная }

Procedure Sort(var Data:DataType);    { Процедура сортировки массива данных }
  var i,j:integer;                    { Счетчики }
      Buf:integer;                    { Буфер для переноса элементов массива }
      NumberMin:integer;
                { Номер минимального числа в неотсортированной части массива }
  Begin
    for i:=1 to DataQuantity do                     { Цикл просмотра массива }
      begin
        NumberMin:=i; { Начальное определение номера минимального
                        числа в неотсортированной части массива }
        for j:=i+1 to DataQuantity do
                            { Цикл просмотра неотсортированной части массива }
          if Data[j]<Data[NumberMin] then NumberMin:=j;
           { Если текущий элемент меньше зафиксированного минимального,
             то переопределение номера зафиксированного минимального }
        { Перенос найденного минимального в неотсортированной
          части массива в начало неотсортированной части: }
        Buf:=Data[NumberMin];
        Data[NumberMin]:=Data[i];
        Data[i]:=Buf
      end;
  End;

BEGIN
  WriteLn;                                          { Пропуск строки }
  GetData(Data);                                    { Получение данных }
  Sort(Data);                                       { Сортировка данных }

  { Определение пары с наибольшим модулем разности: }
  Max1:=Data[1];
  Max2:=Data[DataQuantity];

  { Поиск пары с наименьшим модулем разности: }
  iBuf:=1;                           { Начальное определение буфера счетчика }
  DeltaMin:=Data[2]-Data[1];         { Начальное определение разности }
  for i:=iBuf+1 to DataQuantity-1 do { Просмотр массива данных }
    if (Data[i+1]-Data[i])<DeltaMin
                        { Если разность текущей параы меньше зафиксированной }
      then Begin        { то }
             iBuf:=i;                  { переопределение буфера счетчика }
             DeltaMin:=Data[i+1]-Data[i]
                                       { переопределение наименьшей разности }
           End;
  { Определение пары чисел с минимальной разностью }
  Min1:=Data[iBuf];
  Min2:=Data[iBuf+1];
  Write('Введите имя файла результатов ');
                                        { Вывод приглашения ввести имя файла }
  ReadLn(FileName);                     { Ввод имени файла }
  if FileName='' then FileName:='CON';
                           { Переопределение пустого имени файла под консоль }
  Assign(Out,FileName);    { Связывание файловой переменной с файлом }
  Rewrite(Out);            { Открытие файла для записи }
  { Вывод результатов: }
  WriteLn(Out,'Наибольший модуль разности имеют числа: ',Max1,' ',Max2);
  WriteLn(Out,'Наименьший модуль разности имеют числа: ',Min1,' ',Min2);
  Close(Out)               { Закрытие файла }
END.

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