прямого вибору, метод прямої вставки).

УРОК 27. Програми впорядкування таблиць

Мета уроку: Навчити розв’язувати задачі, що потребують для свого розв’язання впорядкування масивів.

На початку уроку бажано зробити опитування за попереднім матеріалом. Потім розглянути кілька задач на застосування методів впорядкування табличних величин,запропонувати учням самостійне розв ‘язування цих задач.

ЗАДАЧА №339(1)

Умова: Дано натуральне число п та послідовність дійсних чисел а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;

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату