Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
семестр 1 / Задания ИТиП.docx
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
45.02 Кб
Скачать

Лабораторная работа № 7. Изучение программ с ветвлением.

Цель работы: Научиться писать алгоритмы с ветвлением.

Дано. Есть 20 массивов с элементами. Количество элементов от 1 до 100. s взять из работы № 6:

import random

random.seed(s)

seqs = [[random.random() for _ in range(random.randint(1,100))] for _ in range(20)]

for seq in seqs:

# Ваш код

Найти. Количество N элементов в каждом массиве. Вывести их в формате: "В массиве N элементов". Вывод должен быть правильный с точки зрения русского языка в зависимости от количества элементов.

Лабораторная работа № 8. Изучение проверки типов данных.

Цель работы. Научиться проверять типы данных.

Дано. Длины сторон треугольника ненулевой площади (наборы из трёх значений произвольных типов).

Создать.

1. Набор функций, проверяющих правильность заданных наборов (являются ли положительными числами, может ли быть такой треугольник, т.д.)

2. Функции, определяющие, является ли треугольник равнобедренным и равносторонним.

3. Создать программу, проверяющую треугольник, находящую его равнобедренность и разносторонность в случае успешной проверке, и выводящую результат.

Лабораторная работа № 9. Алгоритмы с массивами и функциями.

Цель работы: изучить алгоритмы и методы их анализа

Дано: Массив из 10, 100 и 1000 элементов (s взять из работы № 6)

import random

random.seed(s)

seq10 = [random.random() for _ in range(10)]

seq100 = [random.random() for _ in range(100)]

seq1000 = [random.random() for _ in range(1000)]

Функция сравнения (возвращает True, если x должен быть левее y):

def comp(x,y): # x, y -- float

return x < y

Создать функцию, сортирующую список seq по заданной функции сравнения comparator():

def my_sort(seq, comparator):

# Ваш код

Оценить зависимость времени работы от количества элементов массива, например с помощью модуля time. Для более точной оценки времени, сортировку следует проводить несколько раз (n) и определить среднее время:

import time

start_time = time.time()

n = 10

for i in range(n):

my_sort(seq10, comp)

print((time.time() - start_time) / n)

Сделать выводы.

Пример работы алгоритма:

seq = [1, 3, 2]

def comp(x,y):

return x < y

my_sort(seq, comp)

print(seq) # 1, 2, 3

Лабораторная работа № 10. Классы

Цель работы: научиться создавать и использовать классы.

Задача. Создать класс Треугольник. Треугольник должен задаваться своими вершинами (3 пары дробных значений). Должны быть проверки, что значения правильные.

В классе должны быть реализованы методы нахождения медиан, высот, равнобедренности, равносторонности, площади, периметра. Кроме того, в классе надо реализовать метод вывода треугольника в текстовом виде (например print(treyg)).

И должна быть функция, определяющая равенство треугольников treyg1 == treyg2 (треугольники равны, если равны длины их сторон). object.__eq__(self, other)

Проверить работу класса на примере треугольника из лабораторной работы № 2 : Вывести треугольник, медианы, высоты.

Пример кода, использующего класс Треугольник (значения могут быть не округленные, названия функций и класса могут быть свои):

t = Triangle((1., 0.), (0., 0.), (0., 1.))

# t = Triangle([], 'ab', (0.,0.)) # Эта строка выводит TypeError

print(t.medians()) # (1.118, 1.118, 0.707)

print(t.heights()) # (1.0, 1.0, 0.707)

print(t.equilateral()) # False

print(t.isosceles()) # True

print(t.perimetr()) # 3.414

print(t.area()) # 0.5

t2 = Triangle((1., 0.), (1., 1.), (0., 1.))

if t == t2:

print('Треугольники равны') #Выполняется это условие

else:

print('Треугольники не равны')

print(t) # Треугольник (1.0, 0.0), (0.0, 0.0), (0.0, 1.0)

Соседние файлы в папке семестр 1