
- •Var Mas:array[1..N] of integer;
- •I,j:integer; {I,j — змінні циклу)
- •Var Mas:агay[1..N] of integer;
- •Var Mas:array[1..N] of integer;
- •I,j,k:integer; {I,j — змінні циклу, k — змінна, що фіксує праву границю впорядкування}
- •Var Mas:array[1..N] of integer;
- •Var Mas:array[1..N] of integer;
- •Задача)
- •Var a,b:Masiv; {a — масив для зберігання початкової послідовності, в — відсортований масив}
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, а2 ... ап. Визначити усі числа, що входять у послідовність по 1-му разу.
Впорядкувати за зростанням послідовність чисел, які є кількістю студентів в групах першого курсу нашого технікуму.(22;30;25;20;28;24;34;29;26;33). Знайти середню наповнюваність груп.
Впорядкувати за зростанням показники температури повітря в м. Києві за минулий рік та визначити, в якому місяці найтепліше. (-12,3; -14,2; -5,1; +1,4; +19,6; +19,1; +21,1; +20,5; +18,7; +12,3; +5,2; -4,1)