четвер, 4 лютого 2016 р.

МОДУЛІ



          9.1. Описати модуль для реалізації універального комплексного типу (див. завдання 7.30). Реалізувати операції, відношення та інструкції:
1)           взяти комплексне число;
2)           показати комплексне число;
3)           чи рівні два комплексних числа;
4)           сума двох комплексних чисел;
5)           різниця двох компдексних чисел;
6)           добуток двох комплексних чисел;
7)           частка від ділення двох комплексних чисел;
8)           модуль комплексного числа;
9)           піднесення комплексного числа до натурального степеня;
10)      добуток комплексного числа та дійсного числа;
11)      переведення комплексного числа до алгебраїчної форми;
12)      переведення комплексного числа до тригонометричної форми.
З використанням модуля знайти корені рівняння a*z2+b*z+c=0 з комплексними коефіцієнтами abc.

          9.2. Описати модуль роботи з відрізками на числовій вісі. Тип відрізку представити у вигляді запису:

          тип Відрізок = запис
                                                abдійсн;
                                                emptyбул
                                      кз;

де ab - границі відрізку, empty - ознака того, що відрізок порожній.
Реалізувати дії над відрізками:
1)     зробити відрізок t порожнім;
2)     чи порожній відрізок t;
3)     покласти відрізок t рівним ab;
4)     покласти відрізок t рівним перетину відрізків t1t2.
З використанням модуля скласти програму розв’язку системи квадратних нерівностей вигляду x2+pix+qi>0. Пари коефіцієнтів нерівностей piqiвводяться з пристрою введення.

          9.3. Описати модуль для реалізації мультимножини цілих чисел на базі вектора. Мультимножина - це множина в якій для кожного елемента запам’ятовується не лише його входження, але й кількість входжень. Мультимножину описати як

          тип Мультимножина = масив [0..nіз нат;

де n - відома константа. Кількість входжень елемента k (0<=k<=n) у мультимножину - це значення елемента масиву з індексом k.
Реалізувати дії над мультимножинами:
1)     зробити мультимножину порожньою;
2)     чи є мультимножина порожньою;
3)     додати елемент до мультимножини;
4)     забрати елемент з мультимножини (кількість входжень елемента зменшується на 1, якщо елемент не входить - відмова);
5)     кількість входжень елемента у мультимножину;
6)     об’єднання двох мультимножин (в результаті об’єднання кідькість входжень елемента визначається як максимальна з двох мультимножин);
7)     перетин двох мультимножин (в результаті кількість входжень елемента визначається як мінімальна з двох мультимножин);
З використанням модуля розв’язати задачі:
а) знайти символ, який входить у рядок S максимальну кількість разів (див. завдання 7.111);
б) перевірити, чи складаються рядки S1, S2 з одних і тих же символів, які входять у ці рядки однакову кількість разів;
в) перевірити, чи вірно, що всі символи рядка S1, входять також у рядок S2, причому не меншу кількість разів, ніж у S1.

          9.4. Описати модуль для реалізації обмеженого стеку символів на базі вектора. Стек - це впорядкована сукупність однотипних елементів, в якій є доступ до одного елемента, що називається верхівкою стеку. Стек символів на базі масиву можна описати як:

          тип Стек = масив [1..nіз симв;

де n - відома константа. Елементи стеку будуть займати початковий відрізок вектора до деякого індекса top, який вказує на верхівку стеку.
Реалізувати дії над стеком:
1)     зробити стек порожнім;
2)     чи порожній стек;
3)     вштовхнути елемент у стек (додати новий елемент, який стає верхівкою стеку);
4)     верхівка стеку (повернути значення верхівки стеку; для порожнього стеку - відмова);
5)     забрати верхівку стеку (забрати верхній елемент стеку; для порожнього стеку - відмова).
З використанням модуля виконати інвертування вхідної послідовності символів.

          9.5. Описати модуль роботи з точками та відрізками на площині. Типи точки та відрізку представити у вигляді записів:

          тип   Точка = запис
                                                xyдійсн;
                                      кз;
                   Відрізок = запис
                                                abТочка;
                                      кз;

Реалізувати дії над точками:
1)     взяти точку t;
2)     покласти точку t рівною (xy);
3)     показати точку t.
Реалізувати дії над відрізками:
1)     взяти відрізок s;
2)     показати відрізок s;
3)     покласти відрізок s рівним ab;
4)     довжина відрізку s;
5)     чи лежить точка t на одній прямій з відрізком s;
6)     чи лежить точка t всередині відрізку s;
7)     площа трикутника, утвореного точкою t та відрізком s.

У файлі записано послідовність точок. З використанням модуля роботи з точками та відрізками на площині знайти:
а) трикутник з найбільшою площею, утворений точками послідовності;
б) коло найменшого радіуса, всередині якого лежать всі точки послідовності;
в) відрізок, на якому лежить найбільша кількість точок послідовності;
г) коло, на якому лежить найбільша кількість точок послідовності.

          9.6. Описати модуль та скласти програму для реалізації гри у “хрестики-нолики” на полі розміром 3x3. У модулі реалізувати дії:
          1) зробити хід гравця;
          2) зробити хід комп’ютера;
          3) показати ігрове поле.

          9.7. Відома гра у “морський бій” полягає у наступному. Два гравці на двох полях 10x10 розставляють „кораблі” – прямокутники (4 – розміром 1x1, 3 – розміром 2x1, 2 – розміром 3x1, 1 – розміром 4x1). Кораблі не можуть мати сусідніх клітин по горизонталі, вертикалі або діагоналі. Гравці не бачать розстановку кораблів супротивника. Потім гравці по черзі роблять ходи (кожний хід – це вказання клітини на полі). Якщо гравець потрапляє на поле, яке займає корабель супротивника, він має право на позачерговий хід. Виграє той, хто першим знешкодить всі кораблі супротивника.
          Описати модуль та програму для реалізації гри у “морський бій” між гравцем та комп’ютером. Передбачити у модулі реалізацію дій:
1)     додати корабель;
2)     зробити хід гравця;
3)     зробити хід комп’ютера;
4)     показати ігрове поле (поле гравця та стан поля комп’ютера).

Немає коментарів:

Дописати коментар