Класс Point должен иметь два поля: x типа double - координата по оси Ox, y - координата по оси Oy.
Для класса Point определить конструкторы
которые могут принимать следующие виды параметров:
Методы:
Перегрузить оператор << для вывода точки в виде (x, y) командой std::cout << p
Ввод | Вывод |
Point Q(4, 7); std::cout << Q << endl; std::cout << Q.dist() << endl; std::cout << Q.dist(-5, -1) << endl; Point W(10, 0.5, true); std::cout << W << endl; std::cout << W.dist(Q) << endl; |
(4, 7) 8.06226 12.0416 (8.77583, 4.79426) 5.26059 |
Класс Vector наследуется от класса Point. В систему сдать программу с классами Vector и Point.
Реализовать возможность инициализации объекта класса Vector по двум точкам, четырем координатам в декартовой системе координат, при этом оставить у подкласса возможность базового класса создавать вектор по другой точке (вектору), двум координатам в декартовой системе координат.
Методы:
Ввод | Вывод |
Vector a(Point(4, 3)); Vector b(Point(4, -3)); std::cout << a << " " << b << endl; std::cout << a.dot_product(b) << endl; Vector c(Point(-3, 4)); std::cout << a * c << endl; std::cout << a.dist() << endl; std::cout << a.cross_product(b) << endl; std::cout << (b ^ c) << endl; Vector d(Point(4, 3), Point(4, -3)); std::cout << d << endl; std::cout << 5 * d << endl; |
(4, 3) (4, -3) 7 0 5 -24 7 (0, -6) (0, -30) |
Даны координаты двух точек. Найдите расстояние между ними.
Ввод | Вывод |
---|---|
0 0 1 1 |
1.4142135623730951 |
Даны два числа – координаты точки, не совпадающей с началом координат. Выведите ее полярный угол (величину от 0 до
Ввод | Вывод |
---|---|
2 3 |
0.982793723247329 |
Даны четыре числа: координаты двух невырожденных векторов.
Выведите величину неориентированного угла между ними.
Ввод | Вывод |
---|---|
2 1 3 5 |
0.5667292175235064 |
3 3 -3 -3 |
3.141592653589793 |
Даны координаты трёх точек, которые могут лежать на одной прямой и даже совпадать.
Выведите значение площади треугольника с вершинами в данных точках.
Ввод | Вывод |
---|---|
1 0 2 4 5 2 |
7.0 |
0 0 0 0 0 0 |
0.0 |
Даны четыре числа: координаты двух ненулевых векторов. Если эти вектора коллинеарны, выведите 1. Если эти вектора перпендикулярны, выведите 2. Иначе выведите 0.
В этой задаче нельзя использовать обратные тригонометрические функции.
Ввод | Вывод |
---|---|
1 1 2 2 |
1 |
0 1 1 0 |
2 |
1 2 2 1 |
0 |
Программа получает на вход шесть чисел: координаты трех точек.
Программа должна вывести YES
, если эти точки лежат на одной прямой, или NO
в противном случае.
Ввод | Вывод |
---|---|
0 0 1 1 2 2 |
YES |
Программа получает на вход шесть чисел: координаты точки и координаты начала и конца вектора. Проверьте, принадлежит ли данная точка лучу, задаваемому данным вектором.
Программа должна вывести YES
, если точка принадлежит лучу, или NO
в противном случае.
Ввод | Вывод |
---|---|
1 6 3 7 5 8 |
NO |
Программа получает на вход шесть чисел: координаты точки и координаты концов отрезка. Проверьте, принадлежит ли данная точка данному отрезку.
Программа должна вывести YES
, если точка принадлежит отрезку, или NO
в противном случае.
Ввод | Вывод |
---|---|
3 3 1 2 5 4 |
YES |
Дано шесть чисел: координаты точки, координаты начала и конца вектора.
Программа должна вывести единственное число: расстояние от точки до луча, заданного вектором.
Ввод | Вывод |
---|---|
2 1 1 1 0 2 |
1.0 |
Дано шесть чисел: координаты точки и координаты двух концов отрезка.
Программа должна вывести единственное число: расстояние от данной точки до данного отрезка.
Ввод | Вывод |
---|---|
0 4 2 3 2 5 |
2.0 |
Дан угол AOB (O - вершина угла, A и B - точки на сторонах) и точка P. Определите, принадлежит ли точка P углу AOB (включая его стороны: лучи OA и OB).
Программа получает на вход координаты точек A, O, B, P. Все координаты - целые, не превосходят 100 по модулю. Точки A, O, B не лежат на одной прямой.
Программа должна вывести слово YES или NO.
Ввод | Вывод |
---|---|
0 1 0 0 1 0 1 1 |
YES |
1 0 0 0 0 1 -1 -1 |
NO |
Даны два луча: AB и CD (A и C - вершины лучей, B и D лежат на лучах). Проверьте, пересекаются ли они.
Программа получает на вход координаты точек A, B, C, D. Все координаты - целые, не превосходят 100 по модулю.
Программа должна вывести слово YES или NO.
Ввод | Вывод |
---|---|
0 1 1 2 1 -1 1 0 |
YES |
0 0 1 0 0 1 1 2 |
NO |
Даны два отрезка AB и CD. Проверьте, пересекаются ли они.
Программа получает на вход координаты точек A, B, C, D. Все координаты - целые, не превосходят 100 по модулю.
Программа должна вывести слово YES или NO.
Ввод | Вывод |
---|---|
5 1 2 6 1 1 7 8 |
YES |
Фрекен Бок находится в точке A (xa, ya) и, глядя прямо на Малыша, стоящего в точке B (xb, yb) задает вопрос: «В каком ухе у меня жужжит?». Естественно, у грозной домоправительницы жужжит в ухе, потому что в точке C (xc, yc) завис Карлсон со включенным мотором. Определите, какой ответ Малыша будет правильным.
С клавиатуры вводятся координаты точек A, B и С. Исходные данные являются целыми числами, по модулю не превышающими 1000.
Выведите слово LEFT (заглавными буквами), если у домоправительницы жужжит в левом ухе, RIGHT – если в правом, BOTH – если жужжание и в левом и в правом одинаково.
0 0 1 0 0 1
LEFT
Четыре числа - координаты двух векторов. Все числа целые, по модулю не превышающие 1000.
Одно число - величина неориентированного угла между ними с точностью до пятого знака после запятой.
2 1 1 2
0.64350
Новый градоначальник города Глупова решил с целью пополнения бюджета и экономии горючего провести кампанию борьбы с левым уклоном и левыми рейсами. Для этого он запретил водителям выполнять левые повороты, установив штраф за каждый поворот налево в размере одного миллиона (разворот поворотом налево не считается).
От тяжелого прошлого Глупову достались улицы, которые могут пересекаться под любыми углами. Градоначальник приказал установить компьютерную систему тотальной слежки, которая следит за каждым автомобилем, записывая его координаты каждый раз, когда тот меняет направление движения (включая начальную и конечную точки пути).
Требуется написать программу, вычисляющую по записанной последовательности координат автомобиля штраф, который должен быть взыскан с водителя.
В первой строке вводится целое число N - количество записанных пар координат (1 <= N <= 1000). В каждой из следующих N строк записана очередная из этих пар (вещественные числа).
Выведите суммарный штраф водителя в миллионах.
4 0 0 1 0 1 1 2 1
1
Сделайте демонстрацию для задачи "Штрафы".
Пользователь нажимает на экран, в путь добавляются точки.
Программа рисует отрезки пути разными цветами.
Например, поворот направо красным, а налево - синим.