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

Процедурний тип даних



          7.166. Визначити функцiю для обчислення кореня рiвняння f(x)=0 на вiдрiзку [a,b], на якому f(x) змінює знак, з заданою точнiстю e методом дiлення вiдрiзка навпіл. Виконати обчислення кореня для функції f(x)=x3-7*x-1.

          7.167. Визначити функцiю для обчислення кореня рiвняння f(x)=0 на вiдрiзку [a, b] , на якому f(x) змінює знак, з заданою точнiстю e методом хорд. Виконати обчислення кореня для функції f(x)=x3-7*x-1.
Вказiвка. Обчислюючи корінь методом хорд, з’єднують прямою точки (a, f(a)) та (b, f(b)) та знаходять точку x перетину цієї прямої з віссю абсцис. Якщо знаки f(a) та f(x) співпадають, далі пошук проводять на відрізку [x, b], інакше – на відрізку [a, x].

          7.168. Скласти пiдпрограми для обчислення визначеного iнтегралу
а) методом прямокутників;    б) методом Сiмпсона.
Вказiвка б).Для обчислення iнтегралу використати границю
де  i представлення   у виглядi

 

де


Для обчислення  використати рекурентне співвідношення




          7.169. Нехай М1,М2,...,Мn - матеріальні точки, положення яких на площині задано координатами (x1,y1),...,(xn,yn), а маси визначаються за допомогою вагової функції g(x,y). Положення центру ваги цих точок задано формулами:

          


Визначити процедуру обчислення точки центру ваги (х, у) при заданій ваговій функції g(x,y).
Складену процедуру використати для знаходження положення центра ваги n точок при 

          7.170. Скласти підпрограму для знаходження елемента дійсного вектора, який задовольняє умову, задану булівською функцією Q(x). Виконати пошук, коли умовою Q(x) є:
а) x=a;         б) x>a;        в) a<=x<=b;
де a, b – задані числа.

          7.171. Дано файл з дійсних чисел. Скласти підпрограму для знаходження компонента файлу, який задовольняє умову, задану булівською функцієюQ(x). Виконати пошук, коли умовою Q(x) є:
а) x=a;         б) x>a;        в) a<=x<=b;

де a, b – задані числа.

Файли



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

          7.113. Дано файл, компоненти якого є дійсними числами. Скласти підпрограму для обчислення:
а) суми компонент файлу;
б) кількості від’ємних компонент файлу;
г) останьої компоненти;
д) найбільшого із значень компонент файлу;
е) найменшого із значень компонент файлу з парними номерами;
є) суми найбільшого і найменьшого із значень компонент;
ж) різниці першої і останьої компоненти файлу;
з) кількості компонент файлу, які менші за середнє аріфметичне усіх його компонент.

          7.114. Дано файл, компененти якого є цілими числами. Скласти підпрограму для обчислення:
а) кількості парних чисел серед компонент;
б) кількості квадратів непарних чисел серед компонент;
в) різниці між найбільшим парним і найменьшим непарним числами з компонент;
г) кількості компонент в найдовшій зростаючій послідовності компонент файлу.

          7.115. За масивом А, елементи якого утворені за законом
а) ai=i; б) ai=i2; в) ai=i!; г) ai=2i+1; д) ai=2i+3i+1  (i=1,2,...,n)
побудувати файл,який містить елементи масиву А.

          7.116. Послідовність x1,x2,... утворена за законом

          

 (i=1,2,...). Дано дійсне e>0. Побудувати файл, який містив би усі члени послідовності x1, x2, ..., які стоять перед першим членом, для якого виконано: |xi| < e.

          7.117. Скласти процедуру запису в файл всіх чисел Фіббоначі, які не перевищуючть натуральне число n.

          7.118. Дано файл f, компоненти якого є цілими числами. Побудувати файл g, який містив би всі компоненти файлу f:
а) які є парними числами;
б) які діляться на 3 і на 5;
в) які є точними квадратами;
г) записані у зворотньому порядку;
д) за виключенням повторних входжень одного і того самого числа.

          7.119. Використовуючи файл f, компоненти якого є цілими числами, побудувати файл g, який містить всі парні числа файлу f і файл h - всі непарні. Послідовність чисел зберігається.

          7.120. Задані натуральне число і файл f, компоненти якого є цілими числами. Побудувати файл g, записавши в нього найбільше значення перших nкомпонент файлу f, потім-наступних n компонент і т.д. Розглянути два випадки:
а) число компонент файлу ділиться на n;
б) число компонент файлу не ділиться на n.
В цьому випадку остання компонента файлу g повинна дорівнювати найбільшій із компонент файлу f, які утворюють останню (неповну) групу.

          7.121. Дано файл f, компоненти якого є цілими числами. Файл f містить рівне число додатніх та від’ємних чисел. Використовуючи допоміжний файл h, переписати компоненти файлу f в файл g так, щоб у файлі g :
а) не було двох сусідніх чисел одного знаку;
б) спочатку йшли додатні, потім від’ємні числа;
в) числа йшли таким чином: два додатніх, два від’ємних і т.д. (припускаюється, що число компонент в файлі f ділиться на 4).

          7.122. Назвемо файл, компоненти якого є символами, символьним файлом. По рядку S побудувати файл, який містить символи цього рядка.

          7.123. Дано символьний файл f. Побудувати файл g, утворений із файлу f:
а) зміною всіх його великих літер однойменними малими;
б) записом його компонент у зворотньому порядку.

          7.124. Дано символьний файл, який складається не менш, ніж із 2 компонент. Визначити, чи є два перших символа файлу цифрами. Якщо так, то виявити, чи є число утворене цими цифрами парним.

          7.125. Задано символьні файли f1 і f2. Переписати із збереженням послідовності компоненти файлу f1 у f2, а компоненти файлу f2 - у f1. Використати допоміжний файл h.

          7.126. Задано символьні файли f і g.Записати в файл h спочатку компоненти файлу f, потім - компоненти файлу g зі збереженням порядку.

          7.127. Дано символьний файл. Скласти підпрограму для:
а) додавання в його кінець заданого символа;
б) додавання в його початок заданого символа;
в) підрахунку числа входжень у файл заданого символа;
г) визначення входження у файл заданої комбінації символів;
д) вилучення заданого символа;
е) вилучення других входжень кожного символа.

          7.128. Файл F типу файл із (ключ:t; s:q) називається впорядкованим за ключами, якщо записи в ньому розташовуються в порядку зростання ключів. Скласти процедуру пошуку запису за ключем у впорядкованому файлі.

          7.129. Скласти функцію перевірки рівності файлів, виконаної за один перегляд.їх змісту.

          7.130. Скласти процедуру вилучення з файлу запису із заданим ключем.

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

          7.132. Скласти функцію побудови множини записів файлу.
Розв’язок. Визначимо типи
          тип t = запис
                             Ключ: t;
                             s: q
                             кз;
                   st = множ із t;

          Функція SetZap(F :файл із t): st це
                   змін s: st; x: t;
          поч
                   s ¬ [ ]; відкрити(F);
                   поки Øeof(F) повт
                             читати(F,x); s¬s+[x]
                   кц;
                   SetZap¬s
          кф;

          7.133. Файл H називається злиттям файлів F і G, якщо SetZap(H)=SetZap(F)ÈSetZap(G) (див. попереднє завдання). Скласти процедуру злиття двох впорядкованих файлів у новий впорядкований файл.

          7.134. Багаж пасажира характеризується номером пасажира, кількістю речей та їх загальною вагою. Дано файл пасажирів, який містить прізвища пасажирів, та файл, який містить інформацію про багаж декількох пасажирів (номер пасажира – це номер запису у файлі пасажирів). Скласти процедуру для
а) знаходження пасажира, у багажу якого середня вага однєї речі відрізняється не більш як на 1 кг від загальної середньої ваги речей;
б) визначення пасажирів, які мають більше двох речей, і пасажирів, кількість речей яких перебільшуе середнє число речей;
в) видачі відомостей про пасажира, число речей у багажі якого не менш, ніж у будь-якому іншому багажі, а вага речей не більша, ніж у будь-якому іншому багажі з цим же числом речей;
г) визначення, чи мають хоча б два пасажири багажі, які не відрізняються кількістю речей та відрізняються вагою не більше, ніж на 1 кг (якщо такі пасажири є, то показати їх прізвища);
д) визначення пасажира, багаж якого складається з однієї речі, вагою не менше 30 кг.

          7.135. Відомості про учня складаються з його імені, прізвища та назви класу (рік навчання та літери), в якому він вчиться. Дано файл, який містить відомості про учнів школи. Скласти підпрограми, які дозволяють
а) визначити, чи є в школі учні з однаковим прізвищем;
б) визначити, чи є учні з однаковим прізвищем в якихось паралельних класах;
в) визначити, чи є учні з однаковим прізвищем у якомусь класі;
г) відповісти на питання а)-в) по відношенню до учнів, у яких співпадають і ім’я, і прізвище;
д) визначити, в яких класах нараховується більше. ніж 35 учнів;
е) визначити, на скільки учнів в восьмих класах більше, ніж в десятих;
є) зібрати у файл відомості про учнів 9-х і 10-х класів, помістивши спочатку відомості про учнів класу 9а, потім 9б і т.д.
ж) отримати список учнів даного класу за наступними зразками:
          прізвище ім’я
          прізвище і.
          і.прізвище.

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

          7.137. Відомості про автомобіль складаються з його марки, номера і прізвища власника. Дано файл, який містить відомості про декілька автомобілей. Скласти процедури знаходження
а) прізвищ власниківі номерів автомобілей даної марки;
б) кількості автомобілей кожної марки.

          7.138. Дано файл, який містить різні дати. Кожна дата - це число, місяць та рік. Скласти процедури пошука
а) року з найменьшим номером;
б) всіх весняних дат;
в) найпізнішої дати.

          7.139. Дано файл,який містить відомості про книги. Відомості про кожну книгу - це прізвище автора, назва та рік видання. Скласти процедури пошуку
а) назв книг даного автора, виданих з 1960 р.;
б) книг із заданою назвою. Якщо така книга є, то надрукувати прізвища авторів та рік видання.

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

          7.141. Дано файл, який містить відомості про кубіки: розмір кожного кубіка (довжина ребра в см), його колір (червоний, жовтий, зелений, синій) та матеріал (дерев’яний, металевий, картоний). Скласти процедури пошука
а) кількості кубіків кожного з перелічених кольорів та їх сумарний об’єм;
б) кількості дерев’яних кубіків із ребром 3 см та кількості металевих кубіків з ребром більшим за 5 см.

          7.142. Дано файл, який містить відомості про речовину: вказується назва речовини, її питома вага та провідність (провідник, напівпровідник, ізолятор). Скласти процедури для
а) знаходження питомої ваги та назви всіх провідників;
б) вибору даних про напівпровідники та впорядкавування їх, шоб кожний наступний був з меншою питомою вагою, ніж попередній.

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

          7.144. Задано два файли f1 і f2. Фвйл f1 - це інвентарний файл, який містить відомості про те, скільки виробів і яких видів продукції зберігається на складі (вид продукції задається його порядковим номером). Файл f2 - це допоміжний файл, який містить відомості про те, наскільки зменшилась чи збільшилась кільксть виробів по деяких видах продукції. Допоміжний файл може містити декілька відомостей про продукції одного виду або не містити жодної такої відомості. Скласти процедуру оновлення інвентарного файлу за допоміжним, склавши новий файл g.

          7.145. Дано файл, який містить відомості про іграшки: вказується назва іграшки (наприклад: м’яч, лялька, конструктор і т.д.), її вартість в гривнях та вікові границі дітей, для яких іграшка призначається (наприклад, для дітей від двох до п’яти років). Скласти процедури
а) пошуку назв іграшок, вартість яких не перевищує 40 грн. та які підходять дітем 5-и років;
б) пошуку назв іграшок, які підходять дітям і 4, і 10 років;
в) пошуку назв найдорожчих іграшок (ціна яких відрізняється від ціни найдорожчої іграшки не більше, ніж на 50 грн.);
г) визначення ціни найдорожчого конструктора;
д) визначення ціни всіх кубіків;
е) пошуку двох іграшок, які підходять дитині 3-х років, сумарна вартість яких не перевищує 20 грн.
є) пошуку конструктора ціною 22 грн., призначеного дітям від 5 до 10 років. Якщо такої іграшки немає, то занести відомості про неї у файл.

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

          тип Прям = запис
                                      k: ціл;
                                      x1, y1, x2, y2: дійсн
                             кз;

Тоді процедура пошуку прямокутника з найбільшою площею може бути записана у вигляді:
          процедура Прямокутник(арг F: файл із Прям; рез i: ціл; s: дійсн) це
                   змін z Прям; s1:дійсн;
          поч
                   відкрити(F); s¬0;
                   поки Øeof(F) повт
                             читати(F,z);
                             s1¬abs((z.y2-z.y1)*(z.x2-z.x1));
                             якщо s1>s то s¬s1; i¬z.k кр
                   кц
          кп;

          7.147. У двох файлах міститься таблиця футбольного турніру. У першому файлі записано назви команд типу Команда. У другому файлі – результати матчів типу Матч.

          тип   Команда = рядок;
                   Матч = запис
                                      n1, n2, m1, m2: нат
                             кз;

У записі типу Матч n1, n2 – номери першої та другої команд (номери записів у файлі команд); m1, m2 – кількість м’ячів, забитих відповідно першою та другою командою.
Показати команду, яка є лідером, якщо за перемогу нараховується 3 очки, за нічию – 1, за поразку – 0.
З двох команд, які мають однакову кількість очок, першою вважається та, яка
          1) має кращу різницю забитих та пропущених м’ячів;
          2) при однаковій різниці має більше забитих м’ячів;
          3) при всіх однакових попередніх показниках визначається жеребкуванням (використати для жеребкування генератор випадкових чисел).
Вказівка. Описати підпрограми створення файлів команд та матчів; додавання результату матчу; визначення лідера.

          7.148. Дано текстовий файл. Групи символів, які відокремлені пропусками (одним або декількома) і не містять пропусків усередині себе, будемо називати словами. Скласти піпрограми для
а) знаходження найдовшого слова у файлі;
б) визначення кількості слів у файлі;
в) вилучення з файлу усіх слів, які складаються з однієї букви, та зайвих пропусків;
г) вилучення всіх пропусків на початку рядків, в кінці рядків та між словами (окрім одного);
д) вставки пропусків у рядки рівномірно між словами так, щоб довжина всіх рядків (якщо в них більше 1 слова) була 80 символів та кількість пропусків між словами у одному рядку відрізнялась не більше, ніж на 1 (вважати, що рядки файлу мають не більше, ніж 80 символів).
Результат записати у файл h.

          7.149. Визначити процедуру, яка утворює текстовий файл із 9 рядків, в першому з яких одна літера "1", в другому - дві літери "2", ... , в дев’ятому – дев’ять літер "9".

          7.150. Визначити процедуру, яка за заданою послідовністю символів формує текстовий файл із рядками по 40 літер (в останньому рядку літер може бути і менше).

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

          7.152. Визначити процедуру виведення
а) всіх рядків текстового файлу;
б) рядків, які містять більше 60 символів.

          7.153. Визначити функцію, що обчислює кількість рядків текстово­го файлу, які
а) починаються із заданого символу;
б) закінчується на заданий символ;
в) починаються і закінчуються одним і тим же символом;
г) складаються з однакових символів.

          7.154. Визначити процедуру, яка переписує у текстовий файл g всі рядки текстового файлу f
а) із заміною в них символа ‘0’ на ‘1’ і навпаки;
б) у інвертованому вигляді.

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

          7.156. Визначити процедуру, яка переписує компоненти текстового файлу f у файл g, вставляючи до початку кожного рядка один символ пропуску. Порядок компонент не повинен змінюватися.

          7.157. Визначити процедуру, яка друкує по рядках зміст текстового файлу, вставляючи до початку кожного рядка його порядковий номер і символ пропуску.

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

          7.159. Вважаючи, що довжина рядка текстового файлу f не перевищує 80, визначити процедуру, яка, доповнюючи короткі рядки файлу fпропусками справа, формує текстовий файл g, всі рядки якого мають довжину 80.

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

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

          7.162. У текстовому файлі f записана послідовність цілих чисел, які розділяюються пропусками. Визначити процедуру запису у текстовий файл gвсіх додатніх чисел із f.

          7.163. У текстовому файлі кожний рядок містить декілька натуральних чисел, які розділяюються пропусками. Числа визначають вигляд геометричної фігури (номер) та її розміри. Прийняті наступні домовленості:
·        відрізок прямої задається координатами своїх кінців та має номер 1;
·        прямокутник задається координатами верхнього лівого і нижнього правого кута та має номер 2;
·        коло задається координатами центра і радіусом та має номер 3.
Визначити процедури обчислення
а) відрізка з найбільшою довжиною;
б) прямокутника з найбільшим периметром;
в) кола з найменшою площею.

          7.164. Скласти алгоритм для перевірки правильності розстановки фігурних дужок у текстовому файлі – програмі на Сі.

          7.165. Скласти алгоритм для перевірки правильності розстановки операторних дужок ‘begin’ та ‘end’ у текстовому файлі – програмі на Паскалі. Врахувати, що опис типу ‘record’ та оператор ‘case’ мають власний ‘end’.
Вказівка. Визначити підпрограми виділення з рядка підрядка, обмеженого з обох боків символами з заданої множини, та переведення рядка у верхній регістр.

Масиви



          7.34. Визначити функцію для обчислення суми:
а) компонент з парними номерами;
б) компонент з непарними номерами;
в) додатніх компонент;
г) від’ємних компонент
дійсного вектора.

          7.35. Визначити процедури для
а) введення ;
б) виведення дійсного вектора.

          7.36. Визначити функції обчислення
а) середнього арифметичного компонент дійсного вектора;
б) норми дійсного вектора;
в) відстані між двома точками в n-вимірному евклідовому просторі;
г) скалярного добутку двох дійсних векторів.

          7.37. Визначити функції обчислення кількості компонент дійсного вектора
а) більших заданого числа;
б) які належать заданому відрізку прямої.

          7.38. Визначити функції обчислення
а) похідної від многочлена  в заданій точці х;
в) інтеграла многочлена Рn(х) на заданому відрізку.

          7.39. Використавши підпрограму обчислення значення многочлена Рn(х) з завдання 7.38 а) в заданій точці х, скласти алгоритм обчислення значень двох многочленів P(x)=1+x+x2+...+x20, Q(x)=1-x+x2-...-x15.

          7.40. Скласти підпрограми для обчислення функцій

          

          

          

          

          

          

          

          

          

          

          

          7.41. Слід квадратної матриці - це сума її діагональних елементів. Визначити функцію обчислення сліду матриці .

          7.42. Визначити функцію для обчислення
а) визначника квадратної матриці;
б) ранга квадратної матриці.
Розв’язок а). Розв`язувати задачу будемо зведенням матриці до трикутного вигляду. Якщо в і-му рядку aii=0, то будемо шукати такий рядок j, в якомуaii<>0 Якщо такий рядок відсутній, то визначник дорівнює нулю, інакше міняємо місцями і-ий та j-ий рядки. Маємо
          функція  Визначник(А: масив[1..n,1..n] із дійсн): дійсн це
                   змін i,j,k,l:ціл ;c,p,b:дійсн;
          поч
                   р¬1; і¬0;
                    поки (p<>0)&(i<n) повт
                             i¬i+1; j¬n;
                             якщо А[і,і]=0 то
                                       поки (A[j,i]=0)&(j>i) повт
                                                j¬j-1
                                       кц;
                                       якщо j>i то
                                                 для l¬i до n повт
                                                           b¬A[i,l]; A[i,l]¬A[j,l]; A[j,l]¬b
                                                 кц
                                       кр
                             кр;
                             для k¬i+1 до j повт               {цикл до j}
                                       c¬A[k,i]/A[i,i];
                                      для l¬i до n повт
                                                 A[k,l]¬A[k,l]-A[i,l]*c
                                       кц
                             кц;
                             p¬p*A[i,i]
                    кц;
                    Визначник¬p
          кф;

Цикл, відмічений коментарем, виконується до j, а не до n, оскільки у рядках з номерами більшими, ніж j (якщо є такі), в i-му стовпчику стоїть нульовий елемент.

          7.43. Визначити функції для обчислення
а) суми усіх недіагональних елементів матриці;
б) кількості нульових елементів матриці.

          7.44. Визначити функції для обчислення:
а) суми двох векторів;
б) добутку вектора на число.

          7.45. Розглядаючи вектори А та В як послідовності цифр десяткового запису деяких невід`ємних цілих чисел, отримати вектор С - аналогічне представленя для суми цих двох чисел.

          7.46. Циклічним k-зсувом вектора (a1,a2,...,an) вліво називається вектор (ak+1,...,an,a1,...,ak). Визначити функцію для його обчислення.

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

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

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

          7.50. Визначити функції для обчислення
а) суми; б) добутку
двох многочленів A(x)=a0+a1*x+...+an*xn  i B(x)=b0+b1*x+...+bm*xm .

          7.51. Задано многочлен Р(х) з нульовим вільним членом. Знайти перші n коефіцієнтів розкладу 1/P(x) в ряд Тейлора в нулі.

          7.52. Скласти підпрограму обчислення частки Q(x) та залишку R(x) від ділення многочлена

          P(x)=p0+p1*x+...+pn*xn

на многочлен

          T(x)=t0+t1*x+...+tm*xm

P(x)=T(x)*Q(x)+R(x), deg(R)<deg(T), де deg - степінь много­члена.

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

          7.54. Задана дійсна матриця розміру m´n. Знайти вектор В, k-та компонента якого bk це:
а) сума абсолютних величин елементів k-го рядка матриці;
б) добутку елементів k-го рядка;
в) значення середнього арифметичного елементів k-го рядка;
г) число від`ємних елементів в k-му рядку;
д) добутку квадратів тих елементів k-го рядка, модулі яких належать відрізку [1;1,5] (якщо таких елементів немає, то покласти bk=1);
е) значення першого по порядку додатнього елемента k-го рядка (якщо таких елементів немає, то покласти bk =10);
є) сума елементів, які знаходяться за першим від`ємним елементом в k-му рядку (якщо таких елементів немає, то покласти bk=100).

          7.55. Скласти алгоритм “швидкого” обчислення числа Фібоначі (див. задвдання 3.10 з розд. 3) за його номером n, досліджуючи матричне відображення

          , n³2.

          Вказівка. Довести співвідношення

          ,

яке дозволяє звести задачу обчислення чисел Фібоначі до задачі обчислення степені заданої матриці 2-го порядку. Для швидкого обчислення степені використати метод, який було розглянуто у завданні 4.9 (розд. 4), замінюючи операцію множення чисел векторно-матричними операціями.

          7.56. Визначити підпрограми:
а) транспонування матриці;
б) множення матриці на вектор;
в) перестановки двох заданих рядків (стовпчиків) матриці;
г) перестановки заданого рядка матриці з заданим її стовпчиком;
д) побудови цілочисельної квадратної матриці порядку 7, елементами якої є числа 1, 2, ..., 49, розташовані в ній по спіралі;
е) видалення із матриці заданого рядка і заданого стовпчика.

          7.57. Задана дійсна квадратна матриця порядку 2n. Побудувати нову матрицю, переставляючи її блоки розміру n´n

а)                                    б)
Мал. 7.1
а) відповідно мал. 7.1 а);
б) відповідно мал. 7.1 б).

          7.58. Задані натуральне число m, цілі числа а1, а2,..., аm і цілочисельна квадратна матриця порядку m. Рядок з номером і матриці назвемо відміченим, якщо aі>0, і невідміченим у протилежному випадку.
а) всі елементи, розташовані у відмічених рядках матриці, перетворити за правилом: додатні замінити на -1, від’ємні - на 1, а нульові залишити без зміни;
б) підрахувати кількість від’ємних елементів матриці, розташованих у відмічених рядках.

          7.59. Задано дійсні матриці A, В, С, N порядку n, причому N - нульова матриця. Побудувати за цими матрицями матрицю D розміру 2n´3n  у вигляді

          D=.

          7.60. Побудувати функцію, яка виконує теоретико-множинні операції над підмножинами скінченної  універсальної множини, що складається з nелементів (n - задана константа).
Вказівка. Підмножини скінченної універсальної множини представити у вигляді бульового вектора Х довжини n, поклавши X(i)=Іст тоді і тільки тоді, коли, iÎX.

          7.61. Визначити процедуру пошуку заданого елемента матриці.

          7.62. Визначити процедуру пошуку
а) максимальної ; б) мінімальної
компоненти вектора.

          7.63. Визначити процедуру пошуку в заданому векторі компоненти:
а) більшої за задане число;
б) такої, що належить заданому відрізку на прямій.

          7.64. Визначити процедуру підрахунку кількості максимальних і мінімальних компонент вектора.

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

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

          7.67. Задані координати n точок на площині (x1,y1),...,(xn,yn). Знайти номери двох точок, відстань між якими найбільша (вважати, що така пара точок єдина).

          7.68. Дано два дійсних вектори довжини n. Визначити процедуру пошуку найменшої серед тих компонент першого вектора, які входять до другого вектора.

          7.69. Визначити процедуру пошуку спільної компоненти двох векторів.

          7.70. Визначити процедуру пошуку в заданому векторі
а) двох компонент, що дорівнюють заданому числу;
б) двох нульових компонент, які йдуть підряд;
в) двох рівних компонент;
г) двох рівних компонент, які йдуть підряд;
д) компонент, що є числами Фібоначі.

          7.71. Визначити процедуру обчислення кількості інверсій в заданому векторі (тобто таких пар компонент, в яких більше число знаходиться зліва від меншого: xi>xj при i<j).

          7.72. Визначити функцію, яка перевіряє впорядкованість вектора за зростанням. (Вектор (a1,a2,...,an) впорядкований за зростанням, якщоa1<a2<...<an.).

          7.73. Визначити процедуру пошуку спільної компоненти двох впорядкованих векторів.

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

          7.75. Визначити два впорядкованих за неспаданням вектори. Визначити процедуру об'єднання
а) всіх компонент;
б) спільних компонент
цих двох векторів у третій, щоб він знову став впорядкованим за неспаданням.

          7.76. Задана цілочисельна квадратна матриця порядку n і цілочисельний вектор довжини m. Замінити нулями в матриці ті елементи, для яких існують рівні серед компонент даного вектора.

          7.77. Заданий вектор, компонентами якого є множини всіх продуктів із вказаного асортименту, що знаходяться у відповідному магазині. Визначити процедуру пошуку множини продуктів
а) що є в кожному магазині;
б) кожен з яких є хоча б в одному магазині;
в) яких немає в жодному магазині.

          7.78. Заданий вектор ГРУПА, компонентами якого ГРУПА(x) є множини імен людей із вказаного списку тих, що були в гостях у людини з ім'ям X(XÏГРУПА[X]).
Визначити процедуру пошуку хоча б одної людини, яка була в гостях в усіх інших людей, імена яких містяться в компонентах вектора ГРУПА.

          7.79. Заданий вектор розмірності n, компонентами якого є записи, що містять відоммості про вершини гір. У відомостях про кожну вершину вказуються назва гори і її висота. Визначити процедуру пошуку найвищої вершини.

          7.80. Заданий вектор ГР, компонентами якого ГР(х) є записи, що містять дані про людину з іменем Х із вказаного списку. Кожне дане складається з вказаної статі людини та її зросту. Визначити підпрограми для
а) обчислення середнього зросту жінок з групи ГР;
б) пошуку найвищого чоловіка;
в) перевірки, чи є в групі ГР дві людини, однакові на зріст.

          7.81. Заданий вектор ГР розмірності n, компонентами якого є записи, що містять анкети службовців деякого закладу. В кожній анкеті вказується прізвище службовця, його стать, дата народження у вигляді: число, місяць, рік. Визначити процедуру пошуку
а) найстаршого з чоловіків групи ГР;
б) людей з групи ГР, прізвища яких починаються з заданої літери.

          7.82. Заданий вектор розмірності n, компоненти якого містять інформацію про студентів деякого вузу. Відомості про кожного студента складаються з указання його прізвища, ім'я, по батькові, статі, віку, курсу. Визначити процедуру пошуку
а) найбільш поширених чоловічих та жіночих імен;
б) прізвищ та ініціалів усіх студентів, вік яких є найбільш поширеним.

          7.83. Заданий вектор розмірності n, компонентами якого є відомості про складання іспитів студентами деякого вузу. Інформація про кожного студента задана в слідуючому вигляді: прізвище, номер групи, оцінка_1, оцінка_2, оцінка_3. Визначити процедуру пошуку
а) студентів, що мають заборгованості хоча б з одного з предметів;
б) предмета, який було здано краще за усі інші;
в) студентів, що склали всі іспити на 5 і 4.

          7.84. Задано вектор С розміру n, компонентами якого є відомості про мешканців деяких міст. Інформація про кожного мешканця містить його прізвище, назву міста мешкання; адреси мешкання у вигляді: вулиця, будинок, квартира. Визначити процедуру пошуку двох будь-яких жителів із спискуС, що мешкають в різних містах за однаковою адресою.

          7.85. Задано вектор Рейс, компонентами якого Рейс(х) є множини міст із вказаного списку, в які можна за один рейс доїхати автобусом з міста х.Визначити процедуру пошуку множини міст, в які можна дістатися автобусом (за один рейс або через інші міста) із заданого міста.

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

          а), б) 

          7.87. Визначити процедуру обчислення у матриці
а) найменшого елемента;
б) найбільшого елемента;
в) суми елементів рядка, в якому розташований елемент з найменшим значенням;
г) суми найбільших значень елементів її рядків;
д) суми елементів рядків з від'ємним елементом головної діагоналі.

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

          7.89. Визначити підпрограму пошуку найменшого серед найбільших елементів рядків квадратної дійсної матриці порядку n, тобто

          .

Розв'язок. Оформимо підпрограму у вигляді функції, аргумент якої - дійсна матриця А
          функція Мін_Макс(А:масив [1..n,1..n] із дійсн): дійсн це
                   змін i,j:1..n; min,max:дійсн;
          поч
                   для i ¬ 1 до n повт
                             max¬ A[i,1];
                             для j¬ 2 до n повт
                                      якщо А[i,j]>max то
                                                max¬A[i,j]
                                      кр
                             кц;
                             якщо i=1 то min¬ max кр;
                             якщо min>max то
                                      min¬max
                             кр
                   кц;
                   Мін_Макс¬ min
          кф;

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

          7.91. Дана дійсна матриця розміру m´n. Визначити підпрограму побудови вектора, компонентами якого є
а) найменше значення елементів рядків;
б) різниці між найбільшим і найменшим значеннями елементів рядків;
в) найбільші із значень елементів рядків від початку до головної діагоналі включно.

          7.92. Елемент матриці називається "особливим", якщо:
          1) він більший за суму інших елементів свого стовпчика;
          2) в його рядку зліва від нього знаходяться елементи, менші за нього, а справа - більші.
Визначити процедуру пошуку числа "особливих" елементів матриці.

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

          7.94. Визначити функцію перевірки матриці на симетричність.
Розв'язок. Умова симетричності квадратної матриці має вигляд: aij=aji для всіх i<j, i=1, 2, ..., n-1; j=i+1, i+2, ..., n. Тому задачу можна розглядати як задачу пошуку таких i, j, що aij¹aji. Якщо таких індексів немає, то матриця симетрична. Одержуємо
          функція Сим_матр (А: масив [1..n,1..n] із дійсн): бул це
                   змін i,j: ціл; Q: бул;
          поч
                   Q¬ і; i¬ 0;
                   поки Q & (i<n-1) повт
                             i¬ i+1; j¬ i;
                             поки Q & (j<n) повт
                                      j¬ j+1;
                                      Q¬A[i,j]=A[j,i]
                             кц
                   кц;
                   Сим_матр¬ Q
          кф;

          7.95. Визначити процедуру побудови за заданою матрицею А цілочисельного вектора b, присвоївши його k-ій компоненті значення 1, якщо виконується вказана нижче умова, і значення 0 в протележному випадку:
а) всі елементи k-го стовпчика однакові;
б) елементи k-го рядка матриці впорядковані за спаданням;
в) k-ий рядок матриці симетричний;
г) елемент k-го рядка, що належить головній діагоналі, симетричний;
д) елементи k-го рядка не перебільшують заданого числа x;
е) в k-му рядку матриці є хоча б один від’ємний елемент.

          7.96. Визначити процедуру перестановки рядків і стовпчиків матриці так, щоб найбільший елемент її опинився у верхньому лівому куті.
Вказівка. Знаходимо номер рядка k і номер стовпчика l, що містять найбільший елемент матриці. Потім міняємо місцями 1-ий і k-ий рядки, 1-ий і l-ий стовпчикі матриці.

          7.97. Елемент матриці назвемо сідловою точкою, якщо він є найменшим в своєму рядку і водночас найбільшим в своєму стовпчику. Для заданої цілочисельної матриці визначити процедуру пошуку індексів усіх її сідлових точок.

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

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

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

          7.101. Дана бульова матриця. Відомо, що множина істинних елементів є об’єднанням прямокутників, що не перетинаються. Скласти процедуру пошуку їхньої кількості.

          7.102. В умовах попереднього завдання скласти процедуру підрахунку кількості прямокутників, що є квадратами.

          7.103. Задане деяке розташування чорних і білих пішаків (в довільній кількості) на шаховій дошці. Скласти процедуру підрахунку
а) кількості можливих ходів білими;
б) кількості взять білими;
в) кількості чорних і білих пішаків під боєм.

          7.104. Задані n точок площини. Провести коло, на якому лежить найбільша кількість точок даної множини.

          7.105. Задані n точок площини. Визначити процедуру підрахунку кількості рівнобічних трикутників з вершинами у ціх точках.

          7.106. Задані n точок площини. Визначити процедуру вибору трьох з них таких, щоб периметр трикутника з вершинами в цих точках був найбільшим.

          7.107. Таблиця футбольного чемпіонату задана квадратною матрицею порядку n, в якій всі елементи, що належать головній діагоналі, дорівнюють нулеві, а кожний елемент, що не належить головній діагоналі, дорівнює 3, 1 або 0 (числу очок, набраних у грі: 3 - виграш, 1-нічия,  0-програш). Скласти процедуру
а) знаходження кількості команд, що мають перемог більше, ніж поразок;
б) визначення номерів, що пройшли чемпіонат без поразок;
в) пошуку команд, що виграли більше половини ігор.

          7.108. Задана бульова матриця СУСIДИ, елементи якої СУСIДИ(a,b) рівні істині, якщо країни a і b мають спільний кордон, і хибності - в протилежному випадку. Скласти процедуру пошуку країни, що має найбільшу кількість сусідів серед перелічених країн.

          7.109. Задана дійсна матриця Т, елементи якої Т(x,y) означають середньомісячну температуру на острові x в місяці y. Скласти процедуру, що визначає який місяць і на якому острові серед переліченіх островів є найхолоднішим.

          7.110. Задана непротирічна таблиця спорідненості ТС, елементи якої ТС(x,y) можуть приймати значення із списку (син, дочка, батько, мати, ні). Наприклад, ТС(x,y)=ні, якщо y не є ні одним з батьків, ні родичем, ні дитиною x'a, ТС(x,y)=син, якщо y - син x’a і т.п. Скласти процедуру пошуку
а) будь-якої з онучок;
б) будь-якого з дядьків;
в) кількості двоюрідних братів і сестер
людини з ім'ям n із заданого списку.

          7.111. Знайти символ, який входить у рядок S найбільшу кільксть разів.
Вказівка: визначити масив з індексами символьного типу та елементами натурального типу, в якому обчислити та зберегти кількість входжень кожного символу у рядок S; знайти максимальний елемент цього масиву.