Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
все лабы.doc
Скачиваний:
9
Добавлен:
05.11.2018
Размер:
1.86 Mб
Скачать

Завдання до лабораторної роботи

Складіть програми для рішення наступних задач (таблиця 6).

Таблиця 6

Вар.

Зміст завдання

1

Обчислити середнє геометричне елементів масиву Х(20), що задовольняють умові 2 xi<20,5

2

Обчислити середнє геометричне додатних парних елементів масиву М(20)

3

Обчислити середнє геометричне додатних непарних елемнтів масиву А(15)

4

Обчислити середнє арифметичне елементів масиву В(20), що задовольняють умові –5<bi31,8

5

Обчислити середнє арифметичне від’ємних елементів масиву Х(15), кратних 3

6

Знайти кількість елементів масиву Р(20), кратних 4 і не більших від заданого числа А

7

Знайти кількість елементів масиву В(15),числові значення яких належать інтервалу [-8,16]

8

Знайти номер і значення найбільшого парного елемента масиву С(25)

9

Знайти добуток максимального та мінімального від'ємних непарних елементів масиву А(20)

10

Знайти різницю максимального та мінімального додатних парних елементів масиву В(25)

11

Обчислити суму парних від'ємних елементів масиву К(20)

12

Обчислити добуток непарних елементів масиву Х(30), не менших від заданого числа С

13

Обчислити середнє геометричне парних елементів масиву К(20), не менших від 10

14

Обчислити середнє геометричне додатних елементів масиву А(25), не кратних 3

15

Обчислити суму квадратів додатних елементів масиву Р(15), що мають непарні індекси

16

Обчислити середнє геометричне елементів масиву В(20), кратних 5, числові значення яких належать інтервалу [20, 80]

17

Обчислити середнє арифметичне додатних парних елементів масиву Х(15)

Продовження таблиці 6

Вар.

Зміст завдання

18

Підрахувати кількість додатних і парних елементів масиву Х(20)

19

Обчислити середнє арифметичне непарних елементів масиву А(25), числові значення яких належать інтервалу [-15, 45]

20

Обчислити суму тих елементів масиву А(20), числові значення яких належать інтервалу [i,i+1]

21

Знайти номер і значення найменшого додатного непарного елемента масиву А(25)

22

Записати число +1 замість максимального парного, а число -1 замість мінімального непарного елемента масиву М(15)

23

Знайти частку від ділення максимального елемента на мінімальний від'ємний елемент масиву В(20)

24

Знайти різницю між добутком парних елементів і сумою додатних елементів масиву Х(20)

25

Знайти різницю між сумою непарних і добутком від'ємних елементів масиву А(15)

26

Знайти номер останнього додатного парного елемента в масиві В(20)

27

Вивести на друк перший від'ємний елемент масиву К(25) і його порядковий номер

28

У масиві Х(20) поміняти місцями найменший додатний і останній елементи

29

У масиві В(15) поміняти місцями найбільший і найменший елементи

30

Знайти різницю між сумою парних елементів і добутком додатних елементів масиву Y(25)

Лабораторна робота 6

ФОРМУВАННЯ РОБОЧИХ МАСИВІВ ЗА ДОПОМОГОЮ

ОПЕРАЦІЙ СЕЛЕКЦІЇ ВИХІДНОГО МАСИВУ

Мета роботи: виробити практичні навички у складанні алгоритмів, написанні та налагодженні програм у задачах сортування масивів.

Сортування масивів

Розглянемо масив елементів а123,…,аn. Нехай потрібно переставити елементи цього масиву так, щоб після перестановки вони були упорядковані за неубуванням: а1 а2аn. Ця задача називається задачею сортування чи упорядкування масиву. Для розв’язання цієї задачі можна скористатися, наприклад, такими алгоритмами:

1 Знайти елемент масиву, що має найменше значення, переставити його з першим елементом, потім проробити теж саме, почавши з другого елемента і т.д. (сортування вибором).

2 Послідовним переглядом елементів а1,…,аn знайти найменше i таке, що аi>ai+1. Поміняти ai і аi+1 місцями, відновити перегляд з елемента аi+1 і т.д. Тим самим найбільший елемент пересунеться на останнє місце. Наступні перегляди починати знову спочатку, зменшуючи на одиницю кількість елементів, що переглядаються (сортування обміном або методом пухирця).

3 Переглядати послідовно а23,…,аn і кожен новий елемент аi вставляти на придатне місце у вже упорядковану сукупність а123,...,аi-1. Це місце визначається послідовним порівнянням аi з упорядкованими елементами а12,...,аi-1 (сортування вставками).

Якщо потрібно відсортувати частину масиву, що задовольняє заданим умовам, то спочатку відбирають елементи, що задовольняють заданій умові, у робочий масив, а потім його сортують.

Приклади виконання завдання лабораторної роботи

Приклад 17. Сформувати новий масив з позитивних елементів вихідного масиву x(15).

Порядок роботи:

Крок 1. Уводимо масив x(15).

Крок 2. Установлюємо вихідний індекс робочого масиву j=0.

Крок 3. Організовуємо цикл, що перебирає елементи вихідного масиву (тобто індекс i), починаючи з 1-го і кінчаючи 15-м.

Крок 4. Якщо xi 0, то йдемо на крок 7.

Крок 5. Встановлюємо індекс наступного елемента робочого масиву j = j + 1.

Крок 6. Привласнюємо елементу робочого масиву значення елемента вихідного масиву yj = xi.

Крок 7. Якщо цикл по i не закінчився, йдемо на початок циклу, тобто на крок 3.

Крок 8. Друкуємо j елементів робочого масиву y.

Крок 9. Останов.

Приклад 18. Сформувати і вивести на друк два масиви, що містять значення й індекси від’ємних елементів вихідного масиву В(15).

Програма розв’язання даного прикладу має вид:

program pr18;

uses Crt;

const N=15;

type Mas1=array[1..N] of real;

Mas2=array[1..N] of integer;

VAR B,X:MAS1; Y:MAS2; I,J:INTEGER; P:CHAR;

BEGIN CLRSCR;

WRITELN(' УВЕДІТЬ ',N,' ЧИСЕЛ');

FOR I:=1 TO N DO READ(B[I]);

WRITELN(' ':20, 'ВИХІДНИЙ МАСИВ');

for i:=1 to N do write(b[i]:5:1);

writeln;

j:=0;

for i:=1 to N do begin

if b[i]<0 then

begin

j:=j+1;x[j]:=b[i];y[j]:=i;

end;

END;

WRITELN(' ':10, 'НОВІ МАСИВИ');

if j>0 then for i:=1 to j do

writeln(' ':5,'x(',i,')=',x[i]:5:1, 'y(',i,')=',y[i]:2)

else WRITELN(' ТАКИХ ЕЛЕМЕНТІВ НЕМА);

p:=readkey

end.

Приклад 19. Знайти суму двох найбільших негативних елементів масиву x(15).

Порядок роботи:

Крок 1. Уводимо масив x(15).

Крок 2. Установлюємо вихідний індекс робочого масиву j=0.

Крок 3. Організовуємо цикл, що перебирає елементи вихідного масиву (тобто індекс i), починаючи з 1-го і кінчаючи 15-м.

Крок 4. Якщо xi 0, то йдемо на крок 7.

Крок 5. Встановлюємо індекс наступного елемента робочого масиву j = j + 1.

Крок 6. Привласнюємо елементу робочого масиву значення елемента вихідного масиву yj = xi.

Крок 7. Якщо цикл за i не закінчився, йдемо на початок циклу, тобто на крок 3.

Крок 8. Якщо j < 2, то видаємо повідомлення «Масив не сформований» і йдемо на крок 17.

Крок 9. Організовуємо цикл, що визначає кількість переглядів робочого масиву (тобто індекс k), починаючи з 1-го і кінчаючи j-м.

Крок 10. Організовуємо цикл, що визначає пару елементів робочого масиву, що переглядається, (тобто індекс i), починаючи з 1-го і кінчаючи (j-1)-м.

Крок 11. Якщо перший елемент не більше другого, то йдемо на крок 13.

Крок 12. Змінюємо два елемента місцями:

c = yi; yi = yi+1; yi+1 = c.

Крок 13. Якщо цикл по i не закінчився, йдемо на початок циклу, тобто на крок 10.

Крок 14. Якщо цикл за k не закінчився, йдемо на початок циклу, тобто на крок 9.

Крок 15. Обчислюємо суму s = yj + yj-1.

Крок 16. Друкуємо s.

Крок 17. Останов.

Приклад 20. Знайти добуток чотирьох найменших додатних кратних 5 елементів вихідного масиву Х(20).

Спочатку формуємо новий масив з додатних кратних 5 елементів вихідного масиву, а потім отриманий масив сортуємо методом виштовхування (пухирця). Програма має вид:

program pr20;

uses crt;

LABEL 1;

const n=20;

type raz=1..N; mac=array [raz] of integer;

var x,a:mac; d,i,j,k,r:integer; p:char;

BEGIN CLRSCR; WRITELN('УВЕДИ ',N,' ЧИСЕЛ');

FOR I:=1 TO N DO READ(X[I]);

WRITELN(' ':20,'ВИХІДНИЙ МАСИВ');

FOR I:=1 TO N DO WRITE(X[I]:4);

{ ФОРМУВАННЯ НОВОГО МАСИВУ }

writeln; j:=0;

for i:= 1 to N do begin

IF (X[I]>0) AND (X[I] MOD 5 = 0) THEN

BEGIN J:=J+1; A[J]:=X[I]; END; END;

IF J=0 THEN WRITELN(‘ МАСИВ НЕ СФОРМОВАНО’): goto 1;

{ СОРТУВАННЯ ПО ЗРОСТАННЮ }

for k:= 1 to j do

for i:= 1 to j-k do

if a[i+1]<a[i] then

BEGIN D:=A[I]; A[I]:=A[I+1]; A[I+1]:=D; END;

WRITELN(' ':5,'ВІДСОРТОВАНИЙ МАСИВ');

for i:= 1 to j do write(a[i]:4); writeln;

if j>=4 then begin r:=1;

for i:=1 to 4 do r:=r*a[i];

WRITELN('ДОБУТОК 4- Х НАЙМЕНШИХ=',R:6);end

ELSE WRITELN(‘Масив не містить 4 додатних кратних 5 елементів’);

1: p:=readkey

end.