Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Methods_AP_LABS_I

.pdf
Скачиваний:
25
Добавлен:
17.03.2016
Размер:
1.53 Mб
Скачать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.8g(x, y) + g(1.3x, x - y)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

28.

Дано дійсні числа x, y. Обчислити

 

g(y3)

 

 

 

, де

 

 

 

 

 

 

 

 

 

 

 

 

5

 

ai

bi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g(a, b)

 

i 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 2a2i

3b3i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(5i)!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 0

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

29.

Дано

 

 

 

дійсні

 

 

 

 

числа

 

 

 

 

 

x,

y.

 

Обчислити

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t(a, b) (a b)2

a2

 

 

t(x,5) t( y,5) max(t(x5 y5,5), x5) ,

 

b2 .

 

де

 

 

 

 

Використайте функцію знаходження максимального з двох

 

чисел.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30.

Дано

 

 

 

дійсні

 

 

 

 

числа

 

 

 

 

 

x,

y.

 

Обчислити

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t(x2 y3, x y) t(x y,3 x) min( y,

t(x2 y,2))

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t(a, b)

 

 

 

a b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b2

 

 

 

 

 

 

 

 

 

 

 

 

 

де

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

.

 

Використати

 

функцію

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

знаходження мінімального з двох чисел.

 

 

 

 

 

 

 

31.

Дано

 

 

 

дійсні

 

 

 

 

числа

 

 

 

 

 

x,

y.

 

Обчислити

 

 

2

y

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

,

якщо min( y,

 

x2 y ) 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x 2 y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

2 y3

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, x2 y) 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

якщо max(

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x 2 y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

Використати

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

функції знаходження мінімального та максимального із двох чисел.

32.Числа Фібоначчі fn обчислюються за формулами f0=f1=1; fn=fn-1+fn-2 при n=2,3,... Реалізувати функцію, яка за заданим номером n обчислюватиме значення fn: (а) з використанням рекурсії; (б) з використанням «довгої арифметики» для n<65536.

33.Реалізувати за допомогою рекурсивної функції алгоритм quicksort («швидке сортування») для сортування елементів масиву.

34.Реалізувати рекурсивну функцію для розв’язання задачі про Ханойські вежі.

35.Реалізувати рекурсивну функцію для обчислення найбільшого спільного дільника двох натуральних чисел A та B,

використовуючи алгоритм Евкліда.

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

1.Розробити алгоритми до прикладів (лістинги 3.1-3.5) та закодувати їх.

2.Виконати практичні завдання розділу 3.2.

3.Відповісти на контрольні питання 1-10 розділу 3.3.

4.Розробити дві програми за завданнями 11-35 розділу 3.3 на вибір викладача.

5.Виконати 1 завдання з розділу 6 [1] на вибір викладача.

Лабораторна робота №4. Робота з масивами

Мета роботи: ознайомитися з методами роботи з масивами та навчитися використовувати їх для написання програм мовою C++.

4.1 Короткі теоретичні відомості

4.1.1 Оголошення масивів

У масивах поєднуються елементи того самого типу.

Оголошення одномірного масиву:

int array[100];

Оголошення двомірного масиву 5×10 елементів: int arrl[5][10];

У мові C++ масиви мають наступні особливості:

індекс елементів масиву змінюється від 0 до N-1;

вихід значення індексу за межі діапазону 0...N-1 не контролюється.

Якщо значення індексу вийде за межі діапазону 0...N-1, відбудеться доступ до області пам'яті, що не належить масиву, що може привести до серйозних помилок.

Індексами можуть бути будь-які цілі вирази – константи, змінні,

значення функцій.

4.1.2 Ініціалізація масивів

Приклад ініціалізації масиву:

int digit [10] = {0,1,2,3,4,5,6,7,8,9};

Наступний рядок ініціалізує масив і змушує компілятор обчислити розмір масиву автоматично:

int digit [] = {0,1,2,3,4,5,6,7,8,9};

Наступний рядок ініціалізує частину масиву:

int digit[10] = {0,1,2,3,4,5};

Ініціалізація багатомірних масивів:

int

array[3] [4]

=

{0,1,2,3,4,5,6,7,8,9,10,11}

В

даному прикладі

аrrау[0][0]=0,..., array[0][3]=3,

array[l][0]=4 і т.д.

4.1.3 Використання функції sizeof

Якщо Array - ім'я масиву, то вираз sizeof(Array) дорівнює числу байтів,

що займає масив, а вираз sizeof(Array[0]) - числу байтів, що займає один елемент.

4.1.4 Передача масивів функціям

Якщо Array - ім'я масиву, то Аггау[] - покажчик на масив. Для передачі масиву функціям необхідно передати у функцію покажчик на масив і кількість елементів масиву.

Для передачі багатомірного масиву необхідно передати у функцію як кількість рядків, так і кількість стовпців, щоб вказати компілятору, яку структуру має масив:

void fun(int data[][4], int rows);

У наступній програмі (лістинг 4.1) наведені приклади передачі одно- і

двомірних масивів у функцію.

Лістинг 4.1

#include <iostream.h>

int sum (int array[], int n);

int suml (int arrayl[][4], int m, int n); int sum (int array[], int n)

{

int s=0;

for(int il=0; il<n; il++) s+=array[il];

return s;

}

int suml (int array[][4], int m) int s=0;

for(int i2=0; i2<m; i for(int j2=0; j2<4; J2++) s+=array[i2j return s; void main ()

{

int array[10] = {0,1,2,3,4,5,6,7,8,9} ;

int arrayl[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11} ; for (int i=0;i<3;i++)

for (int j=0;j<4;j++)

cout « "arrayl ["<<i«"] ["<<j«"] "«arrayl [i] [j]«"\n"; int sl=sum(array,10); int s2=suml(arrayl,3); cout «

"\nsuml="«sl«"\n"; cout « "sum2 = "«s2;

Результат виконання програми:

array1[0][0]0

array1[0][1]1

array1[0][2]2

array1[0][3]3

array1[1][0]4

array1[1][1]5

array1[1][2]6

array1[1][3]7

array1[2][0]8

array1[2][1]9

array1[2][2]10

array1[2][3]11

sum1=45

sum2=66

4.2 Практичні завдання

1. Виконати свій варіант завдання з таблиці 4.1. Кожне завдання виконується із застосуванням функцій, у які передаються одновимірні масиви. Вихідні дані вводити з клавіатури, генерувати за допомогою функції random. Скласти блок-схеми алгоритмів та програми мовою С++.

Таблиця 4.1

 

 

Варіанти завдань

 

 

 

Варіант

 

Завдання

 

 

 

 

а)

Знайти кількість додатних елементів

1

 

 

б)

Знайти суму елементів, що більші 3

 

 

 

 

в)

Знайти максимальний елемент масиву

 

 

 

 

а)

Знайти кількість від’ємних елементів

2

 

 

б)

Знайти суму від’ємних елементів

 

 

 

 

в)

Знайти мінімальний елемент, що кратний 5

 

 

 

 

а)

Знайти кількість парних елементів

 

 

 

3

б)

Знайти суму елементів, що кратні 3

 

 

 

в)

Знайти різницю максимального та мінімального елементів

 

 

масиву

 

 

 

 

а)

Знайти середнє арифметичне елементів масиву

4

 

 

б)

Знайти суму найбільшого та найменшого елементів масиву

 

 

 

 

в)

Знайти максимальний за модулем елемент масиву

 

 

 

 

а)

Знайти середнє арифметичне парних елементів масиву

 

 

 

 

б)

Знайти суму мінімального додатного елемента масиву та

5

 

його номера

 

 

 

 

в)

Знайти добуток модулів найбільшого від’ємного та

 

 

найменшого парного елементів масиву

 

 

 

 

а)

Знайти кількість елементів, що кратні 5

6

 

 

б)

Знайти суму парних елементів масиву, що стоять на

 

 

непарних місцях

 

 

 

 

в)

Знайти суму другого та найбільшого додатного елементів

 

 

масиву

 

 

 

 

а)

Знайти середнє геометричне парних елементів масиву

7

 

 

б)

Знайти номер найбільшого за модулем елемента масиву

 

 

 

 

в)

Знайти максимальний парний елемент масиву

 

 

 

 

а)

Визначити середнє арифметичне максимального та

 

 

мінімального елементів масиву

8

 

 

б)

Знайти мінімальний за модулем елемент масиву

 

 

 

 

 

в)

Знайти суму елементів з інтервалу [0;10]

 

 

 

 

а)

Визначити середнє геометричне номерів максимального та

 

 

мінімального елементів масиву

9

 

 

б)

Знайти різницю додатних та добуток від’ємних чисел

 

 

масиву

 

 

 

 

в)

Знайти кількість додатних елементів масиву

 

 

 

 

а)

Знайти суму від’ємних елементів

 

 

 

10

б)

Знайти суму елементів масиву, у яких індекс кратний 3

 

 

 

в)

Знайти добуток модулів найбільшого та найменшого

 

 

елементів масиву

 

 

 

 

а)

Знайти суму від’ємних елементів

 

 

 

 

б)

Знайти суму третього та найбільшого додатного елементів

11

 

масиву

 

 

 

 

в)

Знайти різницю максимального та передостаннього

 

 

елементів масиву

 

 

 

 

а)

Знайти кількість 0-х елементів

 

 

 

12

б)

Знайти суму елементів, що кратні 7

 

 

 

в)

Знайти різницю максимального та другого елементів

 

 

масиву

 

 

 

 

а)

Визначити середнє арифметичне максимального та

 

 

третього мінімального елементів масиву

13

 

 

б)

Знайти другий мінімальний за модулем елемент масиву

 

 

 

 

 

в)

Знайти суму елементів з інтервалу [20;30]

 

 

 

 

а)

Знайти середнє арифметичне елементів масиву, індекс яких

 

 

кратний 3

 

 

 

14

б)

Знайти суму найбільшого та найменшого елементів масиву,

 

індекс яких кратний 2

 

 

 

 

 

 

в)

Знайти максимальний за модулем елемент масиву, індекс

 

 

якого кратний 7

 

 

 

 

а)

Знайти кількість додатних елементів, індекс яких кратний 4

15

 

 

б)

Знайти суму елементів, що більші 3 і індекс яких кратний 2

 

 

 

 

в)

Знайти максимальний елемент масиву, індекс якого

 

 

 

 

 

кратний 6

 

 

 

 

 

 

 

 

 

 

 

а)

Знайти середнє геометричне парних елементів масиву,

 

 

індекс яких кратний 5

 

 

 

 

 

 

 

 

16

б)

Знайти номер найбільшого за модулем елемента масиву,

 

індекс якого кратний 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в)

Знайти максимальний парний елемент масиву, індекс якого

 

 

кратний 7

 

 

 

 

 

 

 

 

 

 

 

а)

Знайти суму від’ємних елементів, індекс яких кратний 2

 

 

 

17

б)

Знайти суму елементів масиву, у яких індекс кратний 7

 

 

 

 

 

 

 

 

 

 

в)

Знайти добуток модулів найбільшого та найменшого

 

 

елементів масиву, індекс яких кратний 2

 

 

 

 

 

 

а)

Визначити середнє геометричне номерів максимального та

 

 

мінімального елементів масиву, індекс яких кратний 3

 

 

 

 

 

 

 

18

б)

Знайти різницю

додатних

та

добуток

від’ємних чисел

 

масиву, індекс яких кратний 6

 

 

 

 

 

 

 

 

 

 

 

 

в)

Знайти кількість додатних елементів масиву, індекс яких

 

 

кратний 8

 

 

 

 

 

 

 

 

 

 

 

а)

Визначити середнє геометричне номерів всіх простих

 

 

елементів масиву

 

 

 

 

 

 

 

 

 

 

 

 

 

19

б)

Знайти різницю

додатних

та

добуток

від’ємних чисел

 

масиву, індекс яких кратний 7

 

 

 

 

 

 

 

 

 

 

 

 

в)

Знайти кількість додатних елементів масиву, індекс яких

 

 

кратний 11

 

 

 

 

 

 

 

 

 

 

 

 

а)

Обчислити середнє арифметичне всіх

елементів масиву

 

 

Х(n) цілих чисел, які є від’ємні і мають парні номери

 

 

 

20

б)

Обчислити суму та кількість елементів масиву Х(n) цілих

 

чисел, більших за 1 і менших за 5

 

 

 

 

 

 

 

 

 

 

в)

Обчислити суму номерів елементів масиву Х(n), менших за

 

 

середнє арифметичне елементів цього масиву

 

 

 

 

 

а)

Обчислити різницю між найбільшим та найменшим

 

 

елементами масиву Х(n) цілих чисел

 

 

 

 

 

 

б)

Обчислити значення S=P+K , де P – добуток всіх додатних

21

 

елементів масиву X(n)

цілих чисел, а

K –

добуток всіх

 

від’ємних елементів масиву X(n)

 

 

 

 

 

 

 

 

 

 

 

в)

Обчислити добуток D=K*L ,

де K – кількість додатних

 

 

елементів масиву

X(n)

цілих чисел, а

L- кількість

 

 

від’ємних елементів масиву X(n)

 

 

 

 

 

 

 

а)

Обчислити кількість елементів масиву

Х(n), більших за

 

 

його останній

елемент,

і кількість елементів масиву,

22

 

менших за його останній елемент

 

 

 

 

 

 

 

 

 

 

 

б)

Задано масиви А(n) та В(m). Сформувати

масив С(n) у

 

 

 

наступний спосіб:

 

 

 

 

 

 

 

 

– елемент

масиву

С

дорівнює

сумі

відповідних

 

 

 

елементів

масивів

А

і В , якщо обидва елементи

 

 

 

додатні;

 

 

 

 

 

 

 

елемент

масиву С

дорівнює

добутку відповідних

 

 

 

елементів масивів А і В , якщо обидва елементи додатні;

 

 

елемент

масиву

С

дорівнює

нулю в усіх

інших

 

 

 

випадках

 

 

 

 

 

 

 

 

 

 

 

в)

Задано масив Х(10)

цілих чисел.

Перетворити заданий

 

 

масив у наступний спосіб:

 

 

 

 

 

поділити усі елементи масиву на його найменший

 

 

 

елемент, якщо найменший елемент відмінний від нуля;

 

 

якщо

ж

найменший елемент дорівнює нулю,

то всі

 

 

 

елементи масиву замінити на - 10.

 

 

 

 

 

а)

Задано масив Х(n) цілих чисел. Перетворити заданий масив

 

 

у наступний спосіб:

 

 

 

 

 

 

– до всіх від’ємних елементів додати найбільший елемент

 

 

 

масиву;

 

 

 

 

 

 

 

– всі нульові елементи замінити на 1;

 

 

 

– всі додатні елементи поділити на 2.

 

23

 

 

б)

Задано масив Х(n) цілих чисел. Перетворити заданий масив

 

 

у наступний спосіб:

 

 

 

 

 

 

всі від’ємні елементи помножити на -1;

 

 

 

всі додатні елементи зменшити на 3;

 

 

 

елементи,

які дорівнюють 0, замінити на -2.

 

 

 

 

 

в)

Дано масив A[1..15]. Складіть програму заміни всіх його

 

 

елементів, що більші 10, на нулі.

 

 

 

 

 

 

а)

Дано лінійну таблицю із n дійсних чисел. Знайдіть суму S

 

 

усіх додатних елементів.

 

 

 

 

 

 

 

 

 

 

 

 

24

б)

У

таблиці

а[1..100)]

всі

елементи

рівні 2, 3,4

або 5.

 

Напишіть програму, яка заміняє 2 на 5, 3 на 4, 4 на 3, 5 на 2

 

 

 

 

 

 

в)

Складіть програму підрахунку суми елементів з непарними

 

 

номерами масиву A[1..25].

 

 

 

 

 

 

 

а)

Дано масив A[1..2N]. Складіть програму знаходження

 

 

різниці сум елементів першої та другої половини масиву.

 

 

 

 

б)

Дано лінійну таблицю із n дійсних чисел. Замініть від’ємні

25

 

елементи їх квадратами.

 

 

 

 

 

 

 

в)

Задано таблицю A[1..N]. Побудуйте таблицю B[1..N], у якій

 

 

першими розміщені всі від’ємні елементи таблиці A, а потім

 

 

— усі додатні.

 

 

 

 

 

 

 

 

а)

Із елементів масиву (a1, a2, ..., a20) складіть масив B,

 

 

елементи якого по модулю більші деякого значення С(|a| >

 

 

c).

 

 

 

 

 

 

 

26

 

 

б)

Дано натуральну таблицю A[1..10]. У таблицю М запишіть

 

 

тільки ті числа, остача від ділення яких на 3 рівна 1, а на 5

 

 

— рівна 2.

 

 

 

 

 

 

 

 

 

 

 

в)

Перевірте,

чи є в одномірному числовому масиві хоча б

 

 

 

 

 

 

 

 

 

 

 

 

одна пара протилежних сусідніх чисел.

 

 

 

 

а)

Заданий одномірний числовий масив. Визначте суму

 

 

добутків усіх пар сусідніх чисел.

 

 

 

27

б)

Визначте в одномірному числовому масиві число сусідства

 

із двох чисел різного знака.

 

 

 

 

 

 

в)

Для заданого масиву A(N) знайдіть суму всіх елементів, не

 

 

більших заданого числа N.

 

 

 

 

а)

Дано масив A[1..M]. Складіть програму перестановки

 

 

місцями елементів з парними та непарними номерами.

 

 

 

28

б)

Визначте в одномірному числовому масиві суми додатних і

 

від’ємних елементів.

 

 

 

 

 

 

в)

Перевірте, чи є в даному одномірному числовому масиві

 

 

хоча б одна пара чисел, які співпадають по величині.

 

 

 

 

а)

Визначте суму добутків усіх трійок сусідніх чисел.

 

 

 

 

б)

Складіть програму заміни в прямокутному масиві A[1..k]

29

 

всіх елементів, що більші від 10, на нулі.

 

 

 

 

в)

Дано натуральну таблицю A[1..20]. У таблицю М запишіть

 

 

тільки ті числа, остача від ділення яких на 3 рівна 1.

 

 

 

 

а)

Визначте в одномірному числовому масиві число сусідств

 

 

із взаємообернених чисел.

 

 

 

 

б)

Заданий одномірний числовий масив. Визначте суму

30

 

добутків усіх пар сусідніх чисел.

 

 

 

 

в)

Дано квадратну дійсну матрицю розмірності n. Знайти

 

 

кількість нульових елементів, що розміщені вище головної

 

 

діагоналі.

 

 

 

2. Виконати свій варіант завдання з таблиці 4.2. Кожне завдання виконується із застосуванням функцій, у які передаються масиви. Вихідні дані вводити з клавіатури, генерувати за допомогою функції random.

Таблиця 4.2

 

Варіанти завдань

 

 

Варіант

Завдання

 

 

 

Дана цілочислена квадратна матриця порядку 8. Знайти найменше зі

1

значень елементів стовпця, який має найбільшу суму модулів

 

елементів. Якщо таких стовпців декілька, то брати перший з них.

 

 

 

Задані натуральне число n, цілочислена квадратна матриця порядку

 

n. Одержати bi,..., bn, де bi це:

2

а) найменше зі значень елементів, що знаходяться на початку i-го

рядка матриці до елемента, що належить головній діагоналі,

 

 

включно;

 

б) значення першого за порядком позитивного елемента i-го рядка

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]