Переделать программу так, чтобы сортировка в ней осуществлялась альтернативным способом - Pascal

Узнай цену своей работы

Формулировка задачи:

Переделать программу так, чтобы сортировка в ней осуществлялась альтернативным способом (т.е. через поиск минимального числа и перемещение его в начало, как показано на рисунке 3). По возможности(!) избавиться от одной или двух переменных в программе. Дать пользователю выбор, отсортировать массив по возрастанию или по убыванию
Program Sortirovka_vyborom;
uses crt;  // Подключение библиотеки для очистки экрана
const N=25;// Константа для максимального количества элементов в массиве
var i,j,   // Переменные счётчиков в циклах
    max,   // Переменная для поиска максимального числа в массиве
    posMax,// Переменная хранящая номер элемента с максимальным значением
    lastPos,//Переменная для остановки цикла
    temp   // Переменная для хранения временных данных
    : integer;  // Все они integer, т.е. целые числа
    Mass: array[1..N] of integer; // Массив из N элементов, тоже integer
 
begin          // Начало программы
    clrscr;    // Очистка экрана
    randomize; // Запуск полной рандомизации
 
    for i:=1 to N do   // Цикл заполняющий массив случайными числами
        Mass[i] := random(100); // i-тый элемент массива получает случайное значение (от 0 до 99)
 
    for i:=1 to N do   // Цикл выводящий массив на экран
        write (Mass[i]:3);  // Вывод на экран i-того элемента массива с отступом
 
    // ТЕПЕРЬ НАЧИНАЕТСЯ САМА СОРТИРОВКА
    for j:=1 to N do   // Внешний цикл. Задаёт количество полных проходов по массиву (совпадает с количеством его элементов)
    begin   // Начало внешнего цикла
        max := Mass[1]; // Устанавливаем первым кандидатом на максимальное число – первое число в массиве
        posMax := 1; // Задаём номер его позиции
        lastPos := N-j+1; // Исключаем отсортированные числа из проверки
        for i:=2 to lastPos do // Внутренний цикл. Задаёт количество проверяемых элементов массива за один проход (каждый следующий полный проход, проверяется на один элемент меньше)
        begin   // Начало внутреннего цикла
            if max < Mass[i] then // Проверка: если кандидат на максимальное число меньше i-того элемента массива, то...
            begin // Начало if
                max := Mass[i]; // Сделать кандидатом на максимальное число i-тый элемент массива
                posMax := i; // Запомнить номер нового кандидата на максимальное число
            end; //конец if
        end;  // Конец внутреннего цикла
        temp := Mass[posMax];  // Эта и последующие две строки – меняем местами значения максимально и «последнего» элемента
        Mass[posMax] := Mass[lastPos];
        Mass[lastPos] := temp;
    end;   // Конец внешнего цикла
    // КОНЕЦ СОРТИРОВКИ
    writeln; writeln;  // Переход на новую строку (и пропуск ещё одной) для отделения неотсортированного массива от уже отсортированного
    for i:=1 to N do   // Цикл выводящий массив на экран
        write (Mass[i]:3);  // Вывод на экран i-того элемента массива с отступом
 
    readln;  // Остановка перед закрытием программы
end.   // Конец программы

Решение задачи: «Переделать программу так, чтобы сортировка в ней осуществлялась альтернативным способом»

textual
Листинг программы
const
  n=25;
var
  a: array [1..n] of Integer;
  i, j, k, s, t: Integer;
begin
  Randomize;
  for i:=1 to n do a[i]:=Random(100);
  for i:=1 to n do Write(a[i]:3); WriteLn;
  Write('Направление сортировки (1-возрастание, иначе убывание): ');
  ReadLn(s); if s<>1 then s:=-1;
  for i:=1 to n-1 do begin
    k:=i; for j:=k+1 to n do if s*a[j]<s*a[k] then k:=j;
    t:=a[k]; a[k]:=a[i]; a[i]:=t;
  end;
  for i:=1 to n do Write(a[i]:3); WriteLn;
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы