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

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

Цей фрагмент програми находить найменший елемент одновимі- рного масиву (вектора) а={40; 11; 26; 5}, х=min а„ (і=1, 2, 3, 4). Після виконання цього фрагмента Х=5.

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

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

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

Скласти програму перестановки елементів масиву ав зворотному порядку на мовіTurbo Pascal, якщо елементи масиву визначаються за формулою а1т1= (37я,+3)mod 64. Значення а, дорівнює 40; і змі­нюється від 1 до 17.

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

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

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

    2. Визначити М - кількість перестановок елементів масиву а, як результат цілочислового ділення числа елементів масивуN на 2;

    3. Присвоїти J - номеру поточного елемента масиву, який пе­реставляється на місце елемента з меншим номером - значенняN;

    4. Повторювати М разів наступні дії (1= 1, 2, ..., М):

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

      2. Присвоїти 1-му елементу масиву азначенняJ-ro еле­мента;

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

      4. Зменшити значення J на 1;

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

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

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

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

{програма перестановки елементів масиву А[1..N]) uses Crt; const N=18;

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

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

A[ 1] :=40 ;

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

M:=N div 2; J:=N; for I :=1 to M do begin

X:=A[I]; A[I]:=A[J]; A[J]:=X; J:=J-1 end;

Writeln(' Масив А після перестановки'); 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

аЬ= А] В і + А2 '^2+ Aj -В3 , (1*1) 14

max(S) maxjg' j. 26

avg (Я) = І1/,<7г9 31

' (>[]{}#$ Л ; 64

    1. Створити масив a за формулою аі+1=(37а,+3)mod 64. Зна­чення Яі дорівнює 40;ізмінюється від 1 до 17; а18=30.

    2. Скласти програму послідовного пошуку ключа k в масиві а, якщоfe=4l.

    3. Обчислити avg за формулою (4.2).

    4. Якщо можливо, зменшити avg, розміщуючи елементи, що зустрічаються частіше, на початку масиву, та обчислитиavg.

    5. Зробити висновки щодо поліпшення ефективності алгоритму послідовного пошуку.

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

program LR4_2;

(програма послідовного пошуку ключа К в масиві А[1..N]} uses Crt; const N=20;

var A: array[l..N] of integer; I, M, K: integer; begin

ClrScr; Write!1ввести ключ K='); Readln(K);

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

A[1] :=40; A[18]:=30; (створення масиву)

for I:=1 tc N-2 do A[I+1];=(37*A[I]+3) mod 64;

for I:=l to N do Write(A[I]:3)

Writeln; M:=0; (послідовний пошук) for I:=l to N do if At I]=K then

begin Writeln(' A[',1:2, '] = ',A[I]:3); M:=l end; if M=0 then

Writeln(’ Ключ 1,K,’ в масиві не зустрічається1);

end.

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

Ввести ключ К=41 Вводимо масив А[1..18]

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

Ключ 41 в масиві не зустрічається

  1. Обчислення avg

avg (Я) = І1/,<7г9

  1. Зменшення avg

Зменшити avg не можливо тому, що частота використання кож­ного елемента масиву однакова,/=1/18.

  1. Висновки

Поліпшити ефективність послідовного пошуку ключа k=41 вма­сиві не можливо тому, що частота використання кожного елемента масиву однакова.