Даны 4 точки. Определить, составляют ли они прямоугольник - C (СИ)
Формулировка задачи:
Помогите пожалуйста.
Пользователь задает координаты 4 точек (х и у), программа считает составляют ли они прямоугольник.
Делал через равенство диагоналей, но из-за квадратов на больших значениях выдает ошибку.
как этого избежать или есть ли другой способ это вычислить не прибегая к квадратам числа.
Решение задачи: «Даны 4 точки. Определить, составляют ли они прямоугольник»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
float line(float x1, float y1, float x2, float y2)
{
float k = (y2 - y1) / (x2 - x1);
float b = (x2*y1 - x1*y2) / (x2 - x1);
return k;
};
int main(void) {
float x[4], y[4];
for (int i = 0; i < 4; i++){
printf("Enter x %d: ", i);
scanf("%f", &x[i]);
printf("Enter y %d: ", i);
scanf("%f", &y[i]);
}
if ((line(x[0], y[0], x[1], y[1]))*(line(x[1], y[1], x[2], y[2])) == -1 &&
(line(x[1], y[1], x[2], y[2]))*(line(x[2], y[2], x[3], y[3])) == -1 &&
(line(x[2], y[2], x[3], y[3]))*(line(x[3], y[3], x[0], y[0])) == -1)
{
printf("Rectangle");
}
else
printf("Not a rectangle");
return 0;
}
Объяснение кода листинга программы
- Включение файла с определениями и прототипами функций
- Объявление функции
line, которая вычисляет коэффициент наклона прямой по заданным точкам - Объявление функции
main, которая является точкой входа в программу - Создание массивов
xиyдля хранения координат точек - Цикл, который позволяет ввести координаты всех 4 точек
- Вычисление коэффициента наклона прямой для первых трех точек
- Проверка, являются ли полученные коэффициенты наклона перпендикулярными друг другу
- Вывод соответствующего сообщения в зависимости от результата проверки
- Возврат значения 0, чтобы указать, что программа успешно завершилась