Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_роб_Сортування_масивів.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
240.77 Кб
Скачать

Var Mas:array[1..N] of integer;

і,j,Rez:integer;

Begin

For i:=2 to N do

Begin

j:=i; {Цикл працює, доки лівий елемент більший за правий та доки не досягнуто початох масиву}

while (j>1) and (Mas[j]<Mas[j-1]) do

Begin

Rez:=Mas[j]; Mas[j]:=Mas[j-1]; Mas[j-1]:=Rez; j:=j-1;

End;

End;

End.

Задача)

Умова: Дано натуральне число п та послідовність дійсних чисел а1, а2 ... ап. Після впорядкування цієї послідовності за спаданням визначити, скільки членів послідовності залишилося стояти на своїх місцях.

Розв'язання: Для того, щоб визначити, скільки чисел залишилось на своїх місцях, нам необхідно зберігати як вхідний масив, так і відсортований, тому перш за все зарезервуємо два однакових одновимірних масиви: А — вхідний масив та В — відсортований. Метод сортування масиву в даному випадку можна використовувати будь-який, наприклад, метод прямого вибору. Після виконання впорядкування проходом по обох масивах порівнюємо відповідні елементи вхідного та відсортованого масивів і, якщо вони збігаються, виконуємо підрахунок. Програма має вигляд.

Program Example_339_l;

Uses crt;

Const N = 100;

Type Masiv = array[1..N] of real;

Var a,b:Masiv; {a — масив для зберігання початкової послідовності, в — відсортований масив}

і,j,count:byte; {i,j — змінні циклу, count — кільхість елементів, що залишились на своїх місцях)

Max:real; {Мах — максимальний елемент підмасиву}

N_max:byte; {N_max — номер максимального елементу}

Begin Randomize;

Clrscr;

For i:=1 to N do

Begin A[i]:=random*100-random*50; Write<A[i]:8:2); End;

B:=A; {Копіювання елементів масиву А в масив В}

For i:=1 to N-1 do

Begin

Max:=B[i]; {Зберігання еталону максимуму}

N_Max:=i; {Зберігання номера максимуму}

For j:=i+1 to N do

If B[j]>Max then

begin

Max:=B[j]; {Перевизначення еталону}

N_Max:=j; {Зберігання номеру еталону}

end;

{Обмін місцями максимуму та першого елементу підмасиву}

B[N_Max]:=В[і]; В[і]:=Мах;

End;

count:=0;

For і:=1 to N do

Begin

If A[i]=B[i]

then count:=count+1;

End;

Writeln;

Writeln('Кількість елементів, що не змінили місця ' ,count) ;

Readkey;

End.

Завдання для самостійної роботи:

  1. Дано натуральне число п та послідовність дійсних чисел а1, а2 ... ап. Визначити усі числа, що входять у послідовність по 1-му разу.

  1. Впорядкувати за зростанням послідовність чисел, які є кількістю студентів в групах першого курсу нашого технікуму.(22;30;25;20;28;24;34;29;26;33). Знайти середню наповнюваність груп.

  2. Впорядкувати за зростанням показники температури повітря в м. Києві за минулий рік та визначити, в якому місяці найтепліше. (-12,3; -14,2; -5,1; +1,4; +19,6; +19,1; +21,1; +20,5; +18,7; +12,3; +5,2; -4,1)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]