2026/27, 10В-2, Python: Классы (часть1)

A: Наиболее удаленная точка

Создайте класс Point, определите для него конструктор, метод __str__, необходимые арифметические операции. У класса Point два поля: x и y.

Программа получает на вход число \(N\), далее координаты \(N\) точек. Выведите координаты точки, наиболее удаленной от начала координат.

Реализация класса должна содержать конструктор, метод __str__ для вывода точки, метод dist, который возвращает расстояние от начала координат до точки.

Пример

ВводВывод
2
1 2
2 3
2 3

B: Центр масс

Создайте класс Point, определите для него конструктор, метод __str__, необходимые арифметические операции. У класса Point два поля: x и y.

Выведите координаты центра масс данного множества точек (учтите, что это — два действительных числа).

Для создания точки определите конструктор, который мог бы принимать на вход как два числа, так и строку. Таким образом, точку можно будет создавать как вызовом Point(x, y), так и Point(input()).

Определите операции сложения точек, умножения точки на число, деления точки на число.

Пример

ВводВывод
2
1 2
2 3
1.5 2.5

C: Диаметр множества

Создайте класс Point, определите для него конструктор, метод __str__, необходимые арифметические операции. У класса Point два поля: x и y.

Выведите диаметр данного множества – максимальное расстояние между двумя данными точками.

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

Пример

ВводВывод
3
1 1
1 0
0 0
1.4142135623731

D: Сортировка точек

Создайте класс Point, определите для него конструктор, метод __str__, необходимые арифметические операции. У класса Point два поля: x и y.

Определите для точек операцию сравнения __lt__, сравнивающую точки по значению расстояния от начала координат. Отсортируйте данные точки в порядке возрастания расстояния от начала координат. Точки с одинаковым расстоянием должны идти в том порядке, в котором они были даны.

Пример

ВводВывод
3
1 0
-1 -1
0 0
0 0
1 0
-1 -1

E: Максимальный периметр

Создайте класс Point, определите для него конструктор, метод __str__, необходимые арифметические операции. У класса Point два поля: x и y.

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

Для нахождения периметра треугольника напишите отдельную функцию Perimeter(A, B, C).

Пример

ВводВывод
4
0 0
0 1
1 0
1 1
3.41421356237309

F: Максимальная площадь

Создайте класс Point, определите для него конструктор, метод __str__, необходимые арифметические операции. У класса Point два поля: x и y.

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

Для нахождения площади треугольника напишите отдельную функцию Area(A, B, C).

Пример

ВводВывод
4
0 0
0 1
1 0
1 1
0.5

G: Сократите дробь

Класс Fraction должен иметь два поля: числитель a и знаменатель b. Оба поля должны быть типа int.

Для класса Fraction определите конструктор, который может принимать следующие виды параметров:

У каждой дроби существует единственное каноническое представление. Каноническое представление: это такое представление \(\frac{a}{b}\), что \(b>0\), \( (a, b) = 1\). Класс должен иметь метод reduce, который приводит дробь к каноническому представлению. После каждой операции с дробями (в том числе и в конструкторе) необходимо вызывать метод reduce для сокращения дроби.

Необходимо определить метод __str__, который выводит a/b в каноническом представлении, если же дробь является целым числом, то просто значение этого числа.

Каждая строка входного файла содержит либо два числа, записанных через пробел или дробную черту, либо одно число. Необходимо считать это число в строку и вызвать конструктор для считанной строки, получив объект класса Fraction. После этого нужно вывести данный объект функцией print.

Пример

ВводВывод
1 2
30/-9
8/4
3
1/2
-10/3
2
3

H: Конструкторы

Класс Fraction должен иметь два поля: числитель a и знаменатель b. Оба поля должны быть типа int.

Для класса Fraction определите конструктор, который может принимать следующие виды параметров:

У каждой дроби существует единственное каноническое представление. Каноническое представление: это такое представление \(\frac{a}{b}\), что \(b>0\), \( (a, b) = 1\). Класс должен иметь метод reduce, который приводит дробь к каноническому представлению. После каждой операции с дробями (в том числе и в конструкторе) необходимо вызывать метод reduce для сокращения дроби.

Необходимо определить метод __str__, который выводит a/b в каноническом представлении, если же дробь является целым числом, то просто значение этого числа.

Напомним, что от вас требовалось реализовать конструктор класса Fraction, который принимает на вход разные варианты параметров. В этой задаче проверяется реализация всех этих четырех форм конструктора.

В этой и следующих задачах на проверку нужно сдать только реализацию класса Fraction.

Пример

ВводВывод
a = Fraction()
b = Fraction(1)
c = Fraction(1, 3)
d = Fraction('14 35')
e = Fraction('-6/2')
f = Fraction(e)
print(a, b, c, d, e, f, sep='\n')
0
1
1/3
2/5
-3
-3