Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ОП.docx
Скачиваний:
27
Добавлен:
14.02.2015
Размер:
200.1 Кб
Скачать

Завдання 5.1

Представити математичний запис фрагмента програми і обчис­лити значення змінної X після його виконання, якщо елементи масиву А (який описується як var A: array [1..3, 1..3J of

integer;) визначаються за формуламиA[L,M]=BfI] (L,M=l,2,3; 1=1, 2,..., 9) таBfI+l|=(37*B[Il+3)mod64 (1=1, 2,..., 8). Значення В[1] дорівнює номеру варіанта за списком групи.

Фрагмент програми

Фрагмент програми

1-5

X:=А[1,3]; Nl:=0; N:=3; for I:=1 to N do for J:=I to N do if X<A[I,J] then begin X:*A[I,J];

N1 :=1 end;

6-10

X:=A[1,3]; N1:=0; N:=3; for I:=l to N do for 3:=H-1+1 to N do if A[X,J:<X then begin X:=A[I,J];

N1:=I end;

11-15

X:=A[1,3]; Nl:=0; N:=3; for I:=l to N do for J:=N-I+1 to N do if X<A[I,J] then begin X:=A[I,J];

N1:=I end;

16-20

X:=A[1,3]; N1:=0; N:=3; for I:=1 to N do for J:=1 to N do if X>A[I,J] then begin X:=A[I,J];

N1:=I end;

21-25

X:= A[1,3]; N1:=0; N:=3; for I :=1 to N do for J:=N-1+1 to N do if X>A[1,J] then X : = A [ I, J ] ;

26-30

X: = A [ 1, 3 ]; N1:=0; N:=3; for X:=l to N do for J:=I to N do if X<A[I,J] then X: = A [ X, J ];

Завдання 5.2

Скласти програму сортування масиву ав порядку зростання йо­го елементів визначеним методом та виконати її у середовищі сис­теми програмуванняTurbo Pascal 6.0, якщо елементи масиву ви­значаються за формулою0,-1= (37а(+3)mod 64. Значенняаудорів­нюєN (номеру варіанта за списком групи);ізмінюється від 1 до 19. Метод сортування визначається за наступною таблицею.

Метод сортування

Метод сортування

1-8

Сортування за допомогою вибору

9-18

Сортування вставкою

19-24

Сортування квадратичним вибором

25-30

Обмінне сортування

Завдання 5-3 Оцінити ефективність алгоритму бінарного пошуку (непарні ва­ріанти) та т-блочного пошуку (парні варіанти) за завданням 4.3.

Приклад виконання роботи Завдання 5.1. Представити математичний запис фрагмента про­грами

var A:array [1..З, 1..3] of integer;

R:array [1..3] of integer;

for I:=l to 3 do begin

X:=0;

for J:=1 to 3 do X : =X+A[I,J];

R[I]:=X end;

і обчислити значення змінної X після його виконання, якщо А[1,11=40, A[l,2]=ll, Afl,31=26,A[2,1J=5, А[2,21=60, А[2,31=47, АГЗ, 11=14, А[3,21=9, А[3,31=16.

Розв’язання:

Цей фрагмент програми обчислює суму елементів у кожному рядку матриці А. В результаті його виконання змінна X набуває значення 39, a R[l]=78, R[21=112 іR[3]=39.

Завдання 5.2. Скласти програму сортування масиву ав порядку зростання його елементів методом бульбашкового сортування та виконати її у середовищі системи програмуванняTurbo Pascal 6.0 (7.0), якщо елементи масиву визначаються за формулою «,.,= (37<х,+3)mod 64. Значення а, дорівнюєN (номеру варіанта за списком групи);ізмінюється від 1 до 17.

Розв’язання:

  1. Постановка задачі

Скласти програму сортування масиву ав порядку зростання йо­го елементів методом бульбашкового сортування, якщо елементи масиву визначаються заформулоюй,.м= (37a,-f3) mod 64; а,—40, і= 1,2,..., 17.

  1. Алгоритм розв’язання задачі

Алгоритм розв’язання задачі можна представити у вигляді такої послідовності дій:

    1. Ввести елементи масиву а;

    2. Повторювати наступні дії до виконання умови М*1:

      1. Присвоїти М значення 0;

      2. Повторювати N-1 разів наступні дії:

        1. Присвоїти X - змінної для тимчасового зберігання меншого за значенням елемента - значення (І+1)-го елемента маси­ву а;

        2. Присвоїти (І+1)-му елементу масиву азначення 1-го елемента;

        3. Присвоїти 1-му елементу масиву азначення X;

        4. Присвоїти М значення 1;

    3. Надрукувати елементи масиву апісля сортування.

Запишемо алгоритм розв’язання задачі мовою Turbo Pascal, по­значив масивачерез А, елементи якого мають типInteger. Змінні

  1. N, М, X мають типInteger. Врахуваь те, що оскільки кількість повторень тіла циклу (2.2.2) заздалегідь відома, то логічніше вжи­вати циклforз параметром циклу І (типуInteger).

  1. Текст програми program LR5;

{бульбашкове сортування елементів масиву A[1..N]) uses Crt; const N=18;

var A: array[1..N] of integer; I, M, X: integer; begin

ClrScr; Writeln(' Вводимо масив A[ 1..1,N : 2, '] ');

All]: =4 0 ;

for I:=1 to N-l do A[I+1]:=(37*A[I]+3) mod 64; for I :=1 to N do Write(A[I]:3); Writeln; repeat M:=0;

for I:=l to N-l do if A[I]>A[I+1] then

begin X:=A[I+1]; A[I+1]:=A[I] ; A[I]:=X; M: = l end until Mol;

Writeln{' Масив А після сортування1); for I:=l to N do Write(A[I] : 3); Writeln end.

  1. Результати роботи програми

Вводимо масив А[1..18]

40 11 26 5 60 47 14 9 16 19 2 13 36 55 54 17 56 27

Масив А після сортування

  1. 5 9 11 13 14 16 17 19 26 27 36 40 47 54 55 56 60