Переделать программу так, чтобы сортировка в ней осуществлялась альтернативным способом - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д