[ЗМІСТ]              [Далі]                   [Назад]

 

7. СТРУКТУРИ ДАНИХ

 

7.1 Множини

 

          7.1. Описати функцiю card(А), яка підраховує кiлькiсть елементiв у числовiй множинi

 

          7.2. Визначити функiю, що визначає мiнiмальний елемент чiслової множини.

 

          7.3. Визначити процедуру виведення елементiв числової множини в порядку зростання.

 

          7.4. Визначити функцiю доповнення множини.

 

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

 

          7.6. Дiаметром числової множини називається величина

 

         

 

Визначити функцiю обчислення дiаметра d(А).

 

          7.7. Дано n цiлих чисел вiд 1 до 50. Визначити, скiльки серед них чисел Фiбоначчi та скiльки чисел, перша значуща цифра в десятковому запису яких 1 чи 2. Надрукувати всi цi числа (без повторiв) у порядку зростання.

 

          7.8. Визначити

а) функцiю обчислення кiлькості рiзних (значущих) цифр у десятковому записі натурального числа n;

б) процедуру друку у порядку зростання всiх цифр, які не входять до десяткового запису натурального числа n.

 

          7.9. Скласти функцiю визначення тривалості мiсяця у роцi Y.

Вказiвка. Викорискати в якості базового типу в означеннi множини

          тип мiсяць = (сiч, лют, берез, квiт, трав, черв, лип, серп, верес, жовт, лист, груд);.

 

          7.10. Дана непорожня послiдовнiсть символiв (рядок) S. Описати функцiю, яка визначає загальну кiлькiсть цифр та знакiв операцiй, що входять до рядка S.

 

          7.11. Дано рядок з малих латинських лiтер. Надрукувати:

а) першi входження лiтер до рядка, зберiгаючи початковий взаємний порядок;

б) всi лiтери,що входять до рядка не менше двох раз;

в) всi лiтери, що входять до рядка по одному разу.

 

          7.12. Дано рядок символiв S. В алфавiтному порядку надрукувати (по одному разу) всi малі українські голоснi лiтери, що входять до S.

 

          7.13. Дана непорожня послiдовнiсть слiв iз малих українських літер; мiж сусiднiми словами - пропуск, за останнiм символом - крапка. Надрукувати в алфавiтному порядку:

а) всi голоснi лiтери, які входять до кожного слова;

б) всi приголоснi лiтери, які не входять до жодного слова;

в) всi дзвiнки приголоснi лiтери, які не входять до жодного слова;

г) всi глухi приголоснi, які не входять до жодного слова;

д) всi приголоснi, які входять тiльки в одне слово;

е) всi глухi приголоснi лiтери, які не входять тiльки в одне слово;

є) всi голоснi лiтери, які входять не бiльше нiж в одне слово;

ж) всi дзвiнки приголоснi лiтери, які входять в кожне непарне слово i не входять в жодне парне слово;

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

          Вказiвка. До голосних лiтер належать а, е, и, i, о, у, є, ю, ї; до приголос­них - всi iншi крiм й, ь; дзвiнкi приголоснi - б, в, г, д, ж, з, л, м, н, р; глухі приголосні: к, п, с, т, ф, х, ц, ч, ш, щ.

 

          7.14. Задача пошуку елемента множини може бути розв’язана з використанням процедури пошуку, в якій використовується бульова функцiя Q(х), що задає умову успішності пошуку.

 

          процедура Пошук(арг А:множ із a..b; рез х:a..b; знайд:бул) це

                   змiн вичерп:бул;

          поч

                   х¬ a; вичерп¬ х>b; знайд¬Хиб;

                   поки Ø(вичерп Ú знайд) повт

                             якщо  х в А то знайд ¬ Q(х) кр;

                             якщо Øзнайд то

                                      вичерп ¬ х=b;

                                      якщо Øвичерп то  x¬succ(x) кр

                             кр

                   кц

                   { якщо  знайд то Q(x) інакше "(x в A) ØQ(x) }

          кп;

 

Спростити процедуру пошуку, якщо вiдомо,що a та b належать цiлому або натуральному типу, причому b менше максимально представи­мого числа.

 

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

 

7.2 Записи та об’єднання

 

          7.16. Нехай задано тип для представлення комплексних чисел у алгебраїчній формі:

          тип Компл_Алг = запис

                                      Re: дійсн;

                                      Im: дійсн

                             кз;

Визначити функції для обчислення

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

Розв’язок б).

          функція Різниця(Х,У: Компл_Алг): Компл_Алг це

                   змін z:Компл_Алг;

          поч

                   Z.Re¬X.Re-Y.Rе;

                   Z.Im¬X.Im-Y.Im;

                   Сума¬Z

          кф;

 

          7.17. Визначити процедури

а) введення;         б)виведення комплексного числа.

Розв’язок б).

          процедура  Вивед_К(арг Х:Компл_Алг) це

          поч 

                   показати(Х.Rе);

                   якщо Х.Im>=0 то  показати ('+') кр;

                   показати (X.Im,'.*i')

          кп;

 

          7.18. Визначити програмовані функції для обчислення

а) аргументу;                 б) модуля комплексного числа.

Розв’язок б).

          функція Модуль_К(Х:Компл_Алг):дійсн це

                   змін А:дійсн;

          поч

                   A¬sqrt(X.Re*X.Re+X.Im*X.Im);

                   Модуль_K¬A

          кф;

 

          7.19. Визначити програмовану функцію степеня комплексного числа з натуральним показником.

 

          7.20. Визначити тип "комплексне число у тригонометричній формі" й підпрограми для операцій та інструкцій з завдань 7.16, 7.17, 7.19.

 

          7.21. Визначити функції переведення комплексного числа з алгебраїчної форми у тригонометричну та навпаки.

 

          7.22. Визначити процедуру обчислення коренів квадратного тричлена з заданими комплексними коефіцієнтами.

 

          7.23. Визначити функцію обчислення значень квадратного тричлена з комплексними коефіцієнтами в заданій комплексній точці.

 

          7.24. Визначити програмовані функції обчислення суми всіх доданків, модуль яких не менше e > 0, у комплексній точці z.

 

         

         

 

          7.25. Визначити типи запису для представлення наступних понять:

а) ціна в гривнях і копійках;

б) час в годинах, хвилинах і секундах;

в) дата (число, місяць, рік);

г) адреса (місто, вулиця, будинок, квартира);

д) семінар (предмет, викладач, групи, день тижня, години занять, аудиторія);

е) бланк вимоги на книгу (відомості про книгу: шифр, автор, назва; відомості про читача: № читацького білета, прізвище; дата заказа);

є) поле шахової дошки (а5, b8 і т.д.);

ж) коло (радіус, координати центру).

 

Розв’язок б), в).

Визначимо типи таким чином

б) тип Час=(h: 0..23; mn,sec: 0..59);

в) тип Дата = запис

                                      D:1..31;

                                      M: місяць;

                                      Y : ціл

                             кз;

де тип місяць описано у завданні 7.9.

 

          7.26. Визначимо тип "карта" наступним чином :

 

          тип   масть = (піки, хрести, бубни, чирви);

                   значення = (шість,сім, вісім, дев`ять, десять, валет, дама, король, туз);

                   карта=(m: масть; d: значення).

 

Описати бульову функцію, яка перевіряє, чи "б’є" карта K1 карту K2 враховуючи те, що масть KM є козирною .

 

          7.27. Визначивши тип "Поле" (задача 7.25 є) ), описати бульову функцію, яка перевіряє, чи може ферзь за один хід перейти з поля h1 шахової дошки на поле h2.

 

          7.28. Визначимо тип "раціональне число":

 

          тип Рац = (ch: ціл; zn: 1..maxint),

 

де maxint-максимально представиме ціле число.

Якщо змінна Х має тип Рац, то в прийнятих позначеннях X.ch-чисельник, X.zn-знаменник дробу.

Визначити програмовані функції для

а) обчислення суми двох раціональних чисел ;

б) обчислення добутку двох раціональних чисел ;

в) порівняння двох раціональних чисел ;

г) зведення раціонального числа до нескортного виду .

 

          7.29. Використовуючи опис типу „Дата” (завдання 7.25 в) ), визначити функції обчислення:

а) дати вчорашнього дня ,

б) дня тижня по його даті в поточному році .

Вказівка 14 в). Визначимо тип шуканої функції наступним чином

тип  назва_дня = (пн, вт, ср, чт, пт, сб, нд).

 

          7.30. Визначимо універсальний комплексний тип, який допускає як алгебраїчне, так і тригонометричне представлення:

 

          тип   Предст = (алг, трг);

                   Компл = вибір С: Предст із

                                      алг: (Re, Im: дійсн;);

                                      трг: (R, Phi: дійсн;)

                             кв;

 

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

Розв’язок.

          функція  Модуль(Z: Компл): дійсн це

          поч

                   якщо Z.C=трг то Модуль ¬ Z.R

                   інакше Модуль ¬ Sqrt(Z.Re*Z.Re+Z.Im*Z.Im) кр

          кф.

 

          7.31. Визначити основні функції для універсального комплексного типу (див. завдання 7.16 – 7.19). Для двомісних операцій передбачити усі можливі випадки.

 

          7.32. Визначити тип Плоска_Фігура, який включає трикутник, прямокутник, трапецію та круг. Побудувати функції обчислення периметру та площі плоских фігур.

 

          7.33. Визначити універсальний тип, який допускає представлення точки на площині у прямокутній або полярній системі координат. Побудувати функцію обчислення площі трикутника з вершинами A, B, C.

 

[ЗМІСТ]              [Далі]                   [Назад]