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

 

7.4 Файли

 

          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.5 Процедурний тип даних

 

          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задані числа.

 

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