Страница 1 из 1

pascal(массив)

Добавлено: 28 апр 2008, 15:26
ramilka
Даны 10 точек, координаты каждой точки вводятся с клавиатуры. Определить есть ли среди введённых точек квадрат. Нарисовать рисунок.

Re: pascal(массив)

Добавлено: 29 апр 2008, 12:32
Хыиуду
Расстояние между точками А(x1, y1) и B(x2, y2): sqrt(sqr(x2-x1)+sqr(y2-y1));
Скалярное произведение двух векторов a(a1, a2) и b(b1, b2) равно a1*b1+a2*b2. Векторы перпендикулярны друг другу, если их скалярное произведение равно 0.
Вектор, идущий из точки А(x1, y1) в точку B(x2, y2), имеет координаты (x2-x1, y2-y1).
Таким образом: перебираем в четырех вложенных циклах все точки (две последние проверяем два раза - в прямом порядке и обратном, так, ABCD может не быть квадратом, а ABDC - быть), для каждой четверки точек проверяем следующее:
1. Расстояния между соседними точками равны
2. Углы, образованные сторонами, прямые (т.е. скалярное произведение векторов сторон равно 0).
Если выполняются оба эти условия - очередная четверка точек является квадратом.