Professional Documents
Culture Documents
Лабораторна робота №5
Лабораторна робота №5
Група: КН-22-1
Виконав: Іващенко О. Г.
Прийняв: Окунькова О. О.
Виконання роботи:
Арк.
2
Змн. Арк. № докум. Підпис Дата
Результат виконання програми:
Завдання 3. Задано коло (x-a)2 + (y-b)2 = R2 і точки Р (р1, р2), F (f1, f1), L
(l1, l2). З'ясувати і вивести на екран, скільки точок лежить всередині кола.
Перевірку, чи лежить точка всередині кола, оформити у вигляді функції.
def is_inside_circle(center_x,center_y,point_x,point_y,radius):
c = ((point_x - center_x) **2+ (point_y - center_y) **2)
r2 = radius**2
if c <= r2: return 1
else: return 0
a_point =float(input("Введіть точку a: "))
b_point =float(input("Введіть точку b: "))
r_circle =float(input("Введіть радіус r: "))
dots = []
P,F,L = ["P"],["F"],["L"]
dots.append(P)
dots.append(F)
dots.append(L)
dotsInCircle =0
for dot in dots:
print(f"\nТочка{dot[0]}")
dot.clear()
dot.append(float(input("X = ")))
dot.append(float(input("Y = ")))
result = is_inside_circle(a_point,b_point,dot[0],dot[1],r_circle)
print(bool(result))
dotsInCircle += result
print(f"\nК-сть точок, що знаходяться всередині кола:{dotsInCircle}")
Арк.
3
Змн. Арк. № докум. Підпис Дата
Результат виконання програми:
import math
def triangle_area(a,b,c):
p = (a + b + c)/2
s = math.sqrt(p*(p-a)*(p-b)*(p-c))
return s
def p_area(x,y,z,t):
h = math.sqrt(x * x + y * y)
s1 = x * y /2
s2 = triangle_area(z,t,h)
return round(s1 + s2,5)
x =float(input("Введіть сторону X: "))
y =float(input("Введіть сторону Y: "))
z =float(input("Введіть сторону Z: "))
t =float(input("Введіть сторону T: "))
print("\nПлоща чотирикутника: ",p_area(x,y,z,t))
Арк.
4
Змн. Арк. № докум. Підпис Дата
Результат виконання програми:
def find_numbers(user_numbers,n):
result=[]
p=0
for i in range(1,n+1):
for num in user_numbers:
if(num%i==0):
p+=1
if(p== len(user_numbers)):
result.append(i)
p=0
return result
Арк.
5
Змн. Арк. № докум. Підпис Дата
Завдання 6. Скласти програму для знаходження чисел з інтервалу [М, N],
що мають найбільшу кількість дільників.
import time
def timeit(func):
def wrapper(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
execution_time = end_time - start_time
print(f'Час виконання: {execution_time:.6f} секунд')
return result
return wrapper
def count_divisors(num):
count = 0
for i in range(1, num + 1):
if num % i == 0:
count += 1
return count
@timeit
def find_number_with_most_divisors(start, end):
max_divisors = 0
number_with_max_divisors = None
for num in range(start, end + 1):
divisors_count = count_divisors(num)
if divisors_count > max_divisors:
max_divisors = divisors_count
number_with_max_divisors = num
Арк.
6
Змн. Арк. № докум. Підпис Дата
Завдання 7. Написати функцію для пошуку всіх простих чисел від 0 до N з
можливістю вибору формату представлення результату (списком; рядками в
стовпчик; просто вивести кількість простих чисел.
import time
def timeit(func):
def wrapper(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
execution_time = end_time - start_time
print(f'Час виконання: {execution_time:.6f} секунд')
return result
return wrapper
@timeit
def search(n):
p=0
result=[]
for i in range(1,n+1):
for j in range(1,n+1):
if(i%j==0):
p+=1
if(p==2):
result.append(i)
p=0
return result
n = int(input("Введіть максимальне значення n: "))
result=search(n)
p=int(input("1 - вивести список\n2 - вивести список в стовпчик\n3 - вивести
кількість елементів списку\n"))
if(p==1):
print(result)
elif(p==2):
for res in result:
print(res)
elif(p==3):
print(len(result))
Арк.
7
Змн. Арк. № докум. Підпис Дата
Результат виконання програми:
Арк.
8
Змн. Арк. № докум. Підпис Дата
Завдання 8. Дано список з випадкових натуральних чисел довільної
довжини. Написати програму, що формуватиме з заданого другий список, що
міститиме тільки значення від MIN+bottom до MAX-upper. Де MIN і MAX –
відповідно найменше і найбільше число в списку, а botton і upper – нижня і верхня
межа значень вибірки нового списку. Програма має містити обробку винятків на
випадок введення символів невірного типу, дробових чисел, вихід за межі
мінімального і максимального значення.
import random
import time
def timeit(func):
def wrapper(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
execution_time = end_time - start_time
print(f'Час виконання: {execution_time:.6f} секунд')
return result
return wrapper
@timeit
def function(upper,bottom,random_numbers):
result=[]
Min = min(random_numbers)
Max = max(random_numbers)
if(Min+bottom>=Max-upper):
print("Не правильні межі, помилка")
return 0
else:
for num in random_numbers:
if(Min+bottom<=num<=Max-upper):
result.append(num)
return result
length_of_list = 10
random_numbers = [random.randint(1, 100) for _ in range(length_of_list)]
print("Випадковий список - ", random_numbers)
try:
bottom = int(input("Введіть нижню межу - "))
upper = int(input("Введіть верхню межу - "))
while(bottom>upper):
print("Межі введені не вірно, bottom>upper, введіть ще раз")
bottom=int(input("Введіть нижню межу - "))
upper=int(input("Введіть верхню межу - "))
except ValueError:
print("Помилка: Введено невірний тип даних. Введіть числа.")
result=function(upper,bottom,random_numbers)
print("Результат відсортованого списку - ",result)
Арк.
9
Змн. Арк. № докум. Підпис Дата
Результат виконання програми:
Арк.
10
Змн. Арк. № докум. Підпис Дата