Завдання#
Узагальнене формулювання завдання до лабораторної роботи#
Вивчити принципи створення функцій мови Python.
Розробити програми із визначенням і викликом функцій, які призначені для користувача, відповідно до варіанта завдання. Функції повинні працювати з параметрами.
У звіті обов’язково повинно бути описано, які типи аргументів передаються при виклику функції.
Вхідні дані і результат роботи супроводжувати відповідною інформацією на екрані.
Показати розроблену програму викладачеві.
Письмово відповісти на Питання для самоперевірки.
Оформити звіт відповідно до вимог.
Завдання на виконання лабораторної роботи складається з 2-х частин:
функції на обчислення і логіку;
функції для роботи з рядками.
Варіанти завдань до лабораторної роботи#
Функції на обчислення і логіку (Перше завдання)#
Ввести два дроби: \(\frac{A}{B}\) і \(\frac{C}{D}\). (\(A\) , \(B\), \(C\), \(D\) — натуральні числа). Написати функцію для складання цих дробів. Результат має бути нескоротним дробом. Вхідні параметри: \(A\), \(B\), \(C\), \(D\). Вихідний параметр: нескоротний дріб.
Ввести координати вершин двох трикутників (\((x_1, y_1)(x_2,y_2)(x_3,y_3)\)). Визначити, який з них має більшу площу. Написати функцію, яка обчислює площу трикутника. Вихідні параметри: \(S\) — площа трикутника.
Ввести число \(Х\). Вивести на екран в порядку зростання результат обчислення наступних математичних функцій :
sin(x)
,cos(x)
,ln(x)
. Написати функцію, яка, залежно від вхідних параметрів, виконує обчислення. Вихідні параметри: результат обчисленої функції.Написати функцію, яка б по введеному номеру пори року в якості параметра (\(1\) — зима, \(2\) — весна, \(3\) — літо, \(4\) — осінь) повертала місяці, кількість днів в кожному з місяців, що відповідають цій порі року.
Ввести координати точки \(А(х, у)\). Написати функцію, яка визначає, чи належить вона трикутнику з вершинами в точках \((x_1, y_1)(x_2, y_2)(x_3, y_3)\). Усі значення передавати у функцію. Результат у вигляді булевої змінної.
Ввести два дійсних додатних числа \(Х\) і \(У\). Арифметичні дії над числами пронумеровані (\(1\) — додавання, \(2\) — віднімання, \(3\) — множення, \(4\) — ділення). Написати функцію, яка по введеному номеру виконує ту чи іншу дію над числами. Числа, операції передаються в якості параметрів. Результат операції повертається.
Ввести дійсні числа \(х_1, у_1, х_2, у_2, \ldots, х_{10}, у_{10}\). Знайти периметр десятикутника, вершини якого мають відповідно координати \((х_1, у_1), (х_2, у_2), \ldots, (х_{10}, у_{10})\). Написати функцію обчислення відстані між двома точками, заданими своїми координатами, які передаються при виклику функції.
Ввести відрізки \(a\), \(b\), \(c\) і \(d\). Для кожної трійки цих відрізків, з яких можна побудувати трикутник, надрукувати площу даного трикутника. Написати функцію, яка обчислює площу трикутника зі сторонами \(x\), \(y\) і \(z\), якщо такий трикутник існує.
Мішень для стрільби являє собою концентричні кільця з центром на початку координат. Радіус внутрішнього кільця (“десятки”) — 1 см. Ширина всіх інших кілець — по 1 см. Написати функцію, яка за координатами трьох точок попадання \((х_1, у_1)\), \((х_2, у_2)\) і \((х_3, у_3)\) обчислює суму вибитих очок.
Зауваження: cеред аналізованих пострілів можуть виявитися і попадання “в молоко” (за межі мішені), що не приносять очок.
Ввести оцінки спортсмена 8-ма суддями. Написати функцію підрахунку середньої оцінки спортсмена за показаннями 8 суддів. При підрахунку середньої оцінки необхідно відкинути найбільшу і найменшу оцінки.
На площині задано кільце з центром в точці \((х_0, у_0)\), внутрішнім радіусом \(r_1\) і зовнішнім \(r_2\). Скласти функцію, яка для заданого масиву точок \(ХY\) обчислює кількість точок, що належать кільцю. Точки, розташовані на межі кільця, вважати належним кільцю.
Скласти функцію, яка повертає ціле число з діапазону \([1 \ldots 6]\), що відповідає номеру ситуації при взаємному розташуванні двох кіл. Кола \(О_1\) і \(О_2\) задаються своїми центрами \((х_1, у_1)\), \((х_2, у_2)\) і радіусами \(r_1\) і \(r_2\).
Ситуація 1. Кола знаходяться досить далеко одне від одного.
Ситуація 2. Кола перетинаються, але, по щонайменше, центр одного з них не належить іншому.
Ситуація 3. Коло \(О_2\) цілком знаходиться всередині кола \(О_1\), але їх центри не співпадають.
Ситуація 4. Коло \(О_1\) цілком знаходиться всередині кола \(О_2\), але їх центри не співпадають.
Ситуація 5. Кола концентричні, і \(О_2\) має менший радіус.
Ситуація 6. Кола концентричні, і \(О_1\) має менший радіус.
Задати коло радіуса \(r\) з центром в точці \((x_0, y_0)\) і досліджувану точку з координатами \((x, y)\). Написати функцію, що визначає, який чверті кола, належить досліджувана точка. Номери чвертей окружності повторюють номера квадрантів в декартовій системі координат (\(N = 1,2,3\) або \(4\)). Якщо точка знаходиться поза колом, то покласти \(N = 0\). Граничними ефектами (попадання в центр, на контур кола, на горизонтальний або вертикальний діаметри) — знехтувати.
Написати функцію
Ro(n1,n2)
, яка обчислює відстань між двійковими кодами, відповідними машинному представленню цілочисельних аргументів n1 і n2. Відстанню між двома двійковими кодами називається кількість незбіжних двійкових розрядів. Наприклад:0 1 0 1 1 0 1 0 0 1 0 1 0 1 = * * * = = = (відстань = 3)
Два прямокутники задати парами чисел \((a_1, b_1)\) і \((a_2, b_2)\), що визначають довжини їх сторін. Написати функцію, яка з’ясовує, чи можна один з прямокутників цілком помістити в іншому. Передбачається таке розташування прямокутників, при якому зберігається паралельність сторін.
Ввести два дробу: \(\frac{A}{B}\) і \(\frac{C}{D}\). (\(A\) , \(B\), \(C\), \(D\) — натуральні числа). Написати функцію множення дробу на дріб. Результат повинен бути нескоротним дробом. Вхідні параметри: \(A\), \(B\), \(C\), \(D\). Вихідні параметри: нескоротний дріб.
Ввести координати вершин трикутника (\((x_1, y_1), (x_2, y_2), (x_3, y_3)\)) і координати деякої точки всередині нього \((х, у)\). Написати функцію, яка знаходить відстань від даної точки до найближчої сторони трикутника. (При визначенні відстаней врахувати, що площа трикутника обчислюється і через три його сторони, і через основу і висоту.)
Написати програму обчислення виразу: $\(U = \frac{max^2(x, y,z) - 2^xmin(x, y, z)}{sin(2) + max(x, y , z)/min(x, y, z)}\)\( за заданими з клавіатури числами \)x\(, \)y\(, \)z$. Знаходження максимального і мінімального значення з 3-х чисел оформити у вигляді функцій
maxim(x, y, z)
іminim(x, y, z)
. (Для цього варіанту вбудовані функціїmax
іmin
не застосовувати.)Для двох квадратних рівнянь \(a_1x^2 + b_1x + c_1 = 0\) і \(a_2x^2 + b_2x + c_2 = 0\) визначити, чи мають вони спільні корені. Вивести на екран корені рівняння, які не збігаються. Рішення рівняння оформити у вигляді функцій. Коефіцієнти \(a_1\), \(b_1\), \(c_1\), \(a_2\), \(b_2\), \(c_2\) вводяться з клавіатури.
Ввести натуральне число \(n\). Серед чисел \(1, 2, \ldots, n\) знайти всі ті, які можна представити у вигляді суми квадратів натуральних чисел. Написати функцію, що дозволяє розпізнавати повні квадрати.
Один з алгоритмів перевірки числа на “простоту” полягає в наступному: вихідне число \(N\) послідовно ділять на \(2, 3, 5, 7, 9, ..., 2*p+1\ \ (n \le (2*p+1)^2 \le n+1)\). Якщо жоден із залишків від ділення не дорівнює нулю, то \(n\) — просте. Написати логічну функцію, аргументом якої є довге ціле додатне число. Функція повинна повертати значення
true
, якщо її аргумент є простим числом.Скласти функцію, що визначає максимальне число підряд розташованих одиниць в двійковому представленні числа \(n\). Число \(n\) є вхідним параметром для функції.
На площині виділена полоса, яка утворена двома паралельними прямими \(Ax + By + C_1 = 0\) і \(Ax + By + C_2 = 0\). Написати логічну функцію, що приймає значення
true
, якщо точка з координатами \((x_0, y_0)\) належить вказаній полосі.Скласти програму, яка вводить \(k\) натуральних чисел \(n_1, n_2, \ldots , n_k\ \ (k < 10)\) і сортує їх, розташовуючи “пірамідкою” (найбільше число — в середині, найменші — по краях). У припущенні, що \(n_i < 80\) організувати виведення відсортованих чисел, представляючи кожне з них відповідною кількістю зірочок в \(i\)-тому рядку. Наприклад, для \(n_1 = 3, n_2 = 7\):
*** *******
Скласти програму, яка вводить два значення \(x\) і \(q\), типу
float
іstr
відповідно. Перше (\(x\)) розглядається як значення температури, а друге є ознакою системи вимірювання:q = 'C'
— для шкали Цельсія;q = 'F'
— для шкали Фаренгейта;q = 'K'
— для шкали Кельвіна.
Написати функцію, яка повинна видати значення температури в кожній із трьох систем вимірювань. Зв’язок між системами визначається наступними формулами: $\(F = \frac{9}{5}C + 32 \\ K = 273 + C\)$
Ввести довжини сторін прямокутника. Написати функцію, яка обчислює кут (в градусах) між його діагоналями.
З початку доби минуло \(H\) годин, \(M\) хвилин, \(S\) секунд (\(0 \le H < 12.0 \le M < 60.0 \le S < 60\)). Написати функцію, яка за даними числами \(H\), \(M\), \(S\) повинна визначити кут (в градусах), на який повернулаcь годинникова стрілка з початку доби і вивести його у вигляді дійсного числа. При вирішенні цього завдання не можна користуватися умовними інструкціями і циклами.
Є дві ємності: кубічна з ребром \(A\), циліндрична з висотою \(H\) і радіусом основи \(R\). Написати функцію із вхідними параметрами \(A\), \(H\), \(R\), \(M\), яка визначить, чи поміститься рідина об’єму \(M\) у першу ємність, у другу, в обидві.
Написати функцію, яка переводить число з десяткової системи числення у двійкову або вісімкову.
Написати функцію, яка підраховує кількість парних і непарних цифр в числі, переданому в якості параметра.
Функції для роботи з рядками (Друге завдання)#
Якщо є аналог заданої фунції в методах по роботі з рядками або у вбудованих функціях, їх не застосовувати, а писати свою. Функція повинна реалізовувати поставлену задачу — і нічого більше. Це означає, що функцію можна буде, наприклад, перенести без змін у будь-яку іншу програму, якщо специфікації функції задовольняють умовам задачі.
Примітка: під “словом” всюди розуміється послідовність символів, яка не містить пробілів.
Функція —
Copies(s,s1,n)
. Призначення — копіювання рядка \(s\) в рядок \(s_1\) \(n\) раз.Функція —
Words(s)
. Призначення — підрахунок слів в рядку \(s\).Функція —
Concat(s1,s2)
. Призначення — конкатенація рядків \(s_1\) і \(s_2\).Функція —
Parse(s,t)
. Призначення — поділ рядка \(s\) на дві частини: до першого входження символу \(t\) і після нього.Функція —
StrCenter(s1,s2,l)
. Призначення — центрування — розміщення рядка \(s_1\) в середині рядка \(s2\) довжиною \(l\).Функція —
Delete(s,n,l)
. Призначення — видалення з рядка \(s\) підрядка, починаючи з позиції \(n\), довжиною l.Функція —
Left(s,l)
. Призначення — вирівнювання рядка \(s\) по лівому краю до довжини \(l\).Функція —
Right(s,l)
. Призначення — вирівнювання рядка \(s\) по правому краю до довжини \(l\).Функція —
Insert(s,s1,n)
. Призначення — вставка в рядок \(s\) підрядка \(s_1\), починаючи з позиції \(n\).Функція —
Reverse(s)
. Призначення — зміна порядку символів в рядку \(s\) на протилежний.Функція —
Pos(s,s1)
. Призначення — пошук першого входження підрядка \(s_1\) у рядок \(s\).Функція —
LastPos(s,s1)
. Призначення — пошук останнього входження підрядка \(s_1\) у рядок \(s\).Функція —
WordIndex(s,n)
. Призначення — визначення позиції початку в рядку \(s\) слова з номером \(n\).Функція —
WordLength(s,n)
. Призначення — визначення довжини слова з номером \(n\) в рядку \(s\).Функція —
SubWord(s,n,l)
. Призначення — виділення з рядка \(s\) \(l\) слів, починаючи зі слова з номером \(n\).Функція —
WordCmp(s1,s2)
. Призначення — порівняння рядків (з ігноруванням множинних пробілів).Функція —
StrSpn(s,s1)
. Призначення — визначення довжини тієї частини рядка \(s\), яка містить тільки символи з рядка \(s_1\).Функція —
StrCSpn(s,s1)
. Призначення — визначення довжини тієї частини рядка \(s\), яка не містить символи з рядка \(s_1\).Функція —
Overlay(s,s1,n)
. Призначення — перекриття частини рядка \(s\), починаючи з позиції \(n\), рядком \(s_1\).Функція —
SymbReplace(s,s1,s2)
. Призначення — заміна в рядку \(s\) комбінації символів \(s_1\) на \(s_2\).Функція —
Compress(s,t)
. Призначення — заміна в рядку \(s\) множинних входжень символу \(t\) на одне.Функція —
Trim(s)
. Призначення — видалення початкових і кінцевих пробілів в рядку \(s\).Функція —
StrSet(s,n,l,t)
. Призначення — установка \(l\) символів рядка \(s\), починаючи з позиції \(n\), в значення \(t\).Функція —
Space(s,l)
. Призначення — доведення рядка \(s\) до довжини \(l\) шляхом вставки пробілів між словами.Функція —
Findwords(s,s1)
. Призначення — пошук входження в рядок s заданої фрази (послідовності слів) \(s_1\).Функція —
StrType(s)
. Призначення — визначення типу рядка \(s\) (можливі типи — рядок букв, десяткове число, 16-кове число, двійкове число і т.д.).Функція —
Compul(s1,s2)
. Призначення — порівняння рядків \(s_1\) і та \(s_2\) з ігноруванням відмінностей в регістрах.Функція —
Translate(s,s1,s2)
. Призначення — переклад в рядку \(s\) символів, які входять в алфавіт \(s_1\), в символи, які входять в алфавіт \(s_2\).Функція —
Word(s)
. Призначення — виділення першого слова з рядка \(s\).Функція —
Substr(s,n,l)
. Призначення — виділення з рядка \(s\) підрядка, починаючи з позиції \(n\), довжиною \(l\).