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

Програмування

.pdf
Скачиваний:
60
Добавлен:
23.02.2016
Размер:
1.99 Mб
Скачать

©Караванова Т.П., Любарщук Є.А., Скутар І.Д.

Завдання 2.

1. Обчислити значення факторіала цілого числа т, коли відомо, що:

1

при

n 0 ;

f (n)

 

 

n * f (n 1)

при

n 0.

2. Знайти найбільший спільний дільник двох додатних цілих чисел n та m за алгоритмом Евкліда, скориставшись такою залежністю:

n,

якщо

n m ;

 

 

n m ;

f (n, m) f (n m, m),

якщо

 

якщо

n m.

f (n, m n),

3. Обчислити значення n-го елемента послідовності чисел Фібоначчі, якщо існує така залежність:

0,

 

якщо

n 0 ;

 

 

 

n 0 ;

f (n) 1,

 

якщо

 

f (n 2),

якщо

n 1.

f (n 1)

4.Обчислити площу прямокутника, розміром n*m, скориставшись залежністю:

1,

 

якщо

n m 1;

 

1,

 

n 1;

S (n, m) S (n 1, m)

якщо

 

1,

якщо

m 1.

S (n, m 1)

5. Обчислити значення функції Аккермана для двох невідємних цілих чисел n та m, де:

m 1,

якщо

n 0 ;

 

 

n 0, m 0 ;

A (n, m) A (n 1,1),

якщо

 

якщо

n 0, m 0.

A (n 1, A (n, m 1)),

6. Обчислити значення квадрата цілого додатного числа n, скориставшись

залежністю 2

= ( 1)2 +

2 ( 1) + 1 або

 

 

1,

якщо

n 1;

 

f (n)

1) n n 1, якщо

n 1.

 

f (n

Слід зауважити, що у запропонованому варіанті обчислення квадрата цілого числа використовуються лише операції додавання та віднімання.

7.Обчислити кількість комбінацій з n різних елементів по m, тобто кількість неупорядкованих підмножин з m елементів, що належать

заданій множині з n елементів Cnm , (n m), скориставшись залежністю:

1,

m

Cn 0,

Cm 1n 1

якщо m 0, n 0 або m n 0 ;

якщо m n 0 ;

Cnm 1 в інших випадках .

31

©Караванова Т.П., Любарщук Є.А., Скутар І.Д.

8. Скласти програму, яка реалізує синтаксичний аналізатор для поняття ідентифікатор, де

літера

 

 

 

 

 

 

 

ідентифікатор::

цифра

ідентифікатор

 

 

 

 

літера

 

 

9. Побудувати синтаксичний аналізатор для поняття сума.

сума::=ціле {знак-операції ціле}*

ціле::= цифра {цифра}*

знак-операції::= .

10. Скласти програму, що реалізує синтаксичний аналізатор для поняття простий-вираз, де

 

 

 

простий ідентифікатор

 

простий в ираз::

 

 

знак операції

 

простий в ираз

простий в ираз

простий ідентифікатор :: літера

знак операції :: .

*

32

©Караванова Т.П., Любарщук Є.А., Скутар І.Д.

Лабораторна робота №14

Структуровані типи даних

Завдання 1.

1.Відомості про книги – це прізвище автора, назва, рік видання, вартість. Є вектор, елементи якого – відомості про книги. Встановити, чи є книги одного автора з однаковою назвою різних років видання. Надрукувати інформацію про ці книги.

2.Інформація про автомобіль складається з номера, марки, року випуску, прізвища власника. В заданому списку автомобілів визначити і роздрукувати інформацію про вказані автомобілі. Якщо таких автомобілів немає, то повідомити про це. Визначити автомобілі, в номери яких входять цифри 1 і 9. Надрукувати інформацію про них у хронологічному порядку років випуску.

3.Відомості про учня складаються з його прізвища, імені, домашньої адреси. Задано вектор, елементи якого – структури, що містять інформацію про учнів класу. Перевірити, чи є в класі однофамільці. Надрукувати інформацію про них.

4.Інформація про автомобіль складається з номера, марки, року випуску прізвища власника. В заданому списку автомобілів визначити і роздрукувати інформацію про вказані автомобілі. Якщо таких автомобілів немає, то повідомити про це. Визначити автомобілі, номери яких складаються з 4 різних цифр.

5.Відомості про книги – це прізвище автора, назва, рік видання. Є вектор, елементи якого – відомості про книги. Встановити всі книги в назві яких є деяке визначене слово.

6.В таблиці задано інформацію про назву міста, кількість інститутів, чисельність населення, чисельність студентів. Впорядкувати таблицю по спаданню відношення кількості студентів до чисельності населення.

7.Відомість про результати зимової сесії містить інформацію: прізвище та ініціали студента , номер групи, оцінки із 3-х предметів: а) математичного

33

©Караванова Т.П., Любарщук Є.А., Скутар І.Д.

аналізу; б) алгебри; в) програмування. Написати програму, що вводить інформацію із відомості і друкує прізвища студентів, що вчаться на “4”, “5” та їхнє процентне співвідношення із іншими.

8.Відомості про книги – це прізвище автора, назва, рік видання. Є вектор, елементи якого – відомості про книги. Встановити, яка книга найстаріша і яка наймолодша. Знайти книгу з самою довгою назвою.

9.В множині точок АI в трьохвимірному просторі знайти пару точок з максимальною відстанню між ними ( використати структуру).

10.Про ліки, які зберігаються на складі, відома інформація: назва, термін зберігання, дата випуску, кількість одиниць, вартість уцінки. Визначити, чи є ліки, для яких вже вийшов термін зберігання і підрахувати їх загальну вартість.

11.Дано комплексне число z (пара дійсних чисел) і дійсне число 0 .

Підрахувати

з

 

точністю

 

значення

комплексної функції

ez 1

z

 

z 2

 

z n

 

.

Для опису

комплексного

числа використати

 

 

 

1!

2!

 

n!

 

 

 

 

 

структуру.

12.На складі зберігається продукція заводу. Про кожний вид продукції відомо: номер продукції, назва, кількість одиниць, дата випуску, вартість одиниці. Підрахувати вартість продукції, яка випущена в першому кварталі 1992р. і зберігається на складі.

13.Відомості про книги – це прізвище автора, назва, рік видання. Є вектор, елементи якого – відомість про книги. Знайти всі книги, які видавалися в 1980 році і ім’я автора починається з літери “О”.

14. На площині задані прямі у вигляді Ах+Ву+С=0. Знайти серед них перпендикулярні та паралельні. Використати структури.

15.Площини задані коефіцієнтами рівнянь Ах+Ву+Сz+D=0. Впорядкувати їх за відстанями до заданої точки.

16.У тривимірному просторі задані n циліндрів. Знайти максимальну площу серед площ усіх циліндрів. Надрукувати інформацію про знайдений циліндр. У випадку, коли таких циліндрів декілька – вивести інформацію про всі. Для опису циліндру використати структуру.

17.У тривимірному просторі задано рівняння n куль. Знайти кулі, площа поверхні яких дорівнює об‘єму. Якщо такі кулі існують, то вивести їх

34

i 1,2 , де

©Караванова Т.П., Любарщук Є.А., Скутар І.Д.

параметри (номер, рівняння, площа, об‘єм). Інакше –

 

надрукувати

параметри куль, об‘єм яких більший від площі.

 

 

 

 

 

 

 

 

 

18. У тривимірному просторі задано 2 прямі рівняннями

x xi

 

y yi

 

z zi

,

 

 

 

 

 

 

k

i

 

l

i

 

m

 

 

 

 

 

i

ai ki ;li ;mi – напрямний вектор і – тої прямої, а xi ; yi ; zi – точка на прямій. Знайти рівняння трьох прямих, що проходять через відповідні

точки перетину проекцій заданих прямих на координатні площини. Напрямний вектор шуканих прямих дорівнює векторному добутку векторів ai ,i 1,2 . У випадку паралельності проекцій прямих видати відповідне повідомлення. Для збереження прямої використати структуру.

19.На площині задані прямі у вигляді Ax+By+C=0. Знайти пару прямих, відстань між якими найближча до середньої. Для збереження прямої використати структуру.

20.На площині задано n прямокутників із сторонами паралельними осям координат. Знайти площу фігури, що накриває ці прямокутники. Для збереження прямокутника використати структуру.

21. Задано многочлени fi (x) an xn an1 xn1

a1 x a0 , i

 

.

Знайти площі Si

1, n

криволінійних трапецій, обмежених

лінями x=a, x=b,

y fi (x) , y fi (x) .

Серед всіх Si вибрати максимальне і надрукувати відповідний многочлен. Для збереження многочлена використати структуру.

22.Для заданих трикутників на площині порахувати їхню площу і надрукувати ті трикутники, які мають однаковий периметр. Для збереження трикутника використати структуру.

23. Задано многочлени fi (x) an xn an1xn1 a1x a0 , i 1, n . Написати функції, що знаходять добуток і суму двох многочленів, похідну многочлена.

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

24.На площині задано n кіл рівняннями. Знайти кола, площа яких менша за довжину кола. Для збереження кола використати структуру.

25.Для заданих трикутників на площині знайти рівняння описаних кіл. Для збереження трикутників і кіл використати структури.

26.Анкета містить відомості про атестацію студентів групи: прізвище та ініціали, номер групи, атестацію (0 або 1) по кожному із п‘яти предметів.

35

 

©Караванова Т.П., Любарщук Є.А., Скутар І.Д.

Отримати список

студентів, відсортований за кількістю неатестованих

предметів.

 

 

 

 

 

27. Задано многочлени

fi (x) an xn an1 xn1 a1 x a0 ,

i

 

. Знайти площі

Si

1, n

фігур обертання, утворених обертанням ліній

y fi (x) навколо осі

ОХ

обмежених лінями x=a, x=b. Серед всіх Si вибрати найближче до середнього і надрукувати відповідний многочлен. Для збереження многочлена використати структуру.

28.Площини задані коефіцієнтами рівнянь Ax+By+Cz+D=0. Знайти серед них перпендикулярні. Для збереження площини використати структуру.

29.Кругові сектори кіл задано рівняннями кіл і кутами секторів. Знайти площі кругових секторів. Впорядкувати сектори за зростанням площ. Для збереження секторів використати структуру.

30.Задано многочлени fk (x) an xn an1xn1 a1x a0

, k

 

. Обчислити fk (z) , де

1, n

z k

 

, z – комплексне. Для збереження

многочлена використати

1

структуру.

 

 

 

36

©Караванова Т.П., Любарщук Є.А., Скутар І.Д.

Лабораторна робота №15

Структури даних

Завдання 1.

У завданнях на застосування стеку та черги розробити програму в двох варіантах. Перший – з використанням статичного масиву для організації стека або черги. Другий – з використанням динамічних структур даних.

1.Розробити програму, яка створює стек L , елементами якого є цілі числа. Розміщає в оберненому порядку всі елементи між першим і останнім входженням заданого елемента E , якщо E входить у L не менше двох разів, інакше стек залишається без змін. Друкує модифікований стек по п’ять елементів у рядку.

2.Розробити програму, яка створює чергу L , елементами якої є цілі числа. Вилучає із черги L всі від’ємні елементи і поміщає їх у чергу в оберненому порядку до їх розміщення. Друкує модифіковану чергу по п’ять елементів у рядку.

3.Розробити програму, яка створює стеки L1 і L2 , елементами яких є великі латинські літери. Знаходить всі літери стеку L1, що не містяться у L2 , і друкує їх, розділяючи пробілами, в оберненому порядку до їх розміщення.

4.Розробити програму, яка створює список L , елементами якого є цілі числа і дописує в кінець цього списку всі елементи в оберненому порядку до їх розміщення в L (тобто будується симетричний список, наприклад, 1,2,3,3,2,1). Друкує отриманий список по сім елементів у рядку.

5.Розробити програму, яка створює чергу L , елементами якої є цілі числа. Для заданих чисел a ,b a b друкує в порядку розміщення всі числа черги L менші від a , потім всі числа з діапазону a, b і, нарешті, всі числа більші від

b.

6.Розробити програму, яка створює стек L , елементами якого є дійсні числа. Перетворює стек L так, щоб спочатку розміщувалися всі невід’ємні елементи зі збереженням, порядку їх розміщення, а потім всі від’ємні в

37

©Караванова Т.П., Любарщук Є.А., Скутар І.Д.

оберненому порядку. Друкує модифікований стек по п’ять елементів у рядку.

7.Розробити програму, яка створює списки L1, L2 , L3, елементами яких є цілі числа. Замінює перше входження списку L2 в список L1 (якщо таке є) на список L3. Друкує модифікований список L1 по десять елементів у рядку.

8.Розробити програму, яка створює чергу L , елементами якої є дійсні числа. Перетворює чергу L за правилом: якщо числа упорядковані за неспаданням

x1 x2 xn , то черга залишається без зміни, інакше елементи у черзі розміщуються в оберненому порядку xn , xn 1, ... , x1 . Друкує модифіковану чергу по п’ять елементів у рядку.

9. Розробити програму,

яка створює стек L , елементами якого є дійсні числа.

Обчислює добуток x1

xn x2 xn 1 xn x1 і друкує значення добутку та

всі елементи стеку L .

 

10.Розробити програму, яка створює список L , елементами якого є дійсні

числа r1, r2 ,..., rn . Будує список, елементами якого є числа rn , rn 1,..., r1 , r1, r2 ,..., rn . Друкує отриманий список по п’ять елементів у рядку.

11. Розробити програму, яка створює черги L1 і L2 , елементами яких є

цілі

числа (елементи у черзі L1 упорядковані за неспаданням, а у черзі

L2

розміщені довільно). Вставляє елементи черги L2 у L1 так, щоб L1 залишилась упорядкованою. Друкує модифіковану чергу L1 по десять елементів у рядку.

12.Розробити програму, яка створює список L , елементами якого є малі латинські літери. Друкує в алфавітному порядку всі літери, що входять у список L , по одному разу, по декілька разів і не входять жодного разу.

13.Розробити програму, яка створює стек L , елементами якого є символи. Вилучає із стеку L всі повторні входження кожного символу. Друкує модифікований стек по п’ять елементів у рядку.

14.По кругу розміщаються n дітей. Відлік починається від першого і кожний k -ий вилучається, а круг змикається. Розробити програму, яка визначає порядок вилучення дітей із круга.

15.Розробити програму, яка створює черги L1 і L2 , елементами яких є великі латинські літери. Знаходить всі слова черги L1, що містяться в L2 , і друкує, розділяючи їх пробілами, в оберненому порядку до їх розміщення.

38

©Караванова Т.П., Любарщук Є.А., Скутар І.Д.

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

17.Розробити програму, яка створює стек L , елементами якого є цілі числа

Вставляє у стек L перед кожним входженням елемента E1 елемент E2 . Друкує модифікований стек по п’ять елементів у рядку.

18.Розробити програму, яка створює чергу L , елементами якої є цілі числа.

Вилучає із черги L після кожного входження елемента E1 наступний елемент і поміщає всі вилучені елементи на початок списку в порядку їх розміщення. Друкує модифіковану чергу по десять елементів у рядку.

19.

Розробити програму, яка створює списки L1 і L2 , елементами яких є

 

літери. Знаходить і вилучає із списку L1 всі літери, що також містяться у

 

списку L2 . Друкує модифікований список, розділяючи літери пробілами.

20.

Розробити програму, яка створює стек L , елементами якого є цілі числа

 

x1, x2 ,..., xn . Знаходить у стеці L

і друкує найдовший ланцюжок чисел, що

 

задовольняють умову: xi xi 1 xi 2

.

39

©Караванова Т.П., Любарщук Є.А., Скутар І.Д.

Завдання 2.

У завданнях на застосування стеку та черги розробити програму в двох варіантах. Перший – з використанням статичного масиву для організації стека або черги. Другий – з використанням динамічних структур даних.

1.Дано стек заповнений випадковим чином, з цілих чисел. Видалити з нього всі від’ємні елементи, використовуючи другий стек і одну змінну.

2.Дано чергу з цілих чисел. Видалити з неї всі від’ємні елементи.

3.Дано стек заповнений цілими числами випадковим чином. Видалити зі стека всі числа не кратні заданому з клавіатури.

4.Визначити, що більше: сума додатних і сума модулів від’ємних елементів черги. Черга заповнена цілими числами.

5.Дано стек, що містить цілі числа. Використовуючи другий стек, записати в основу заданого стека суму всіх елементів.

6.Додати в кінець черги суму модулів всіх елементів. Черга складається з цілих додатних і від’ємних чисел.

7.Видалити зі стека, який складено з цілих чисел заданих випадковим чином, кожен другий елемент. Відрахунок починати з першого елемента, що розміщений в основі стека.

8.Черга заповнена випадковим чином цілими числами. Додати в початок черги добуток всіх елементів.

9.Дано стек з цілих чисел, заповнений випадковим чином. За допомогою другого стека видалити останній від’ємний елемент.

10.Відняти від усіх елементів черги число, уведене з клавіатури.

11.Дано стек з цілих чисел, заповнений випадковим чином. Помістити вершину стека в основу, використовуючи допоміжний стек.

12.Додати до всіх елементів черги число, уведене з клавіатури. Черга заповнена цілими числами.

13.Дано стек, заповнений випадковими цілими числами. Видалити з стека повторювані елементи, залишивши по одному.

14.Дана чергу з цілих чисел. Видалити з неї числа, кратні заданому з клавіатури числу.

15.Видалити зі стека, який складається з цілих чисел, всі числа, які не повторюються.

40