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

Ответы на вопрос

Ответ:
#include <iostream>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
double distance(double x1, double y1, double x2, double y2)
{
return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
int main() {
double ax, ay, bx, by, cx, cy;
double ab, ac, bc;
cout << "A: ";
cin >> ax >> ay;
cout << "B: ";
cin >> bx >> by;
cout << "C: ";
cin >> cx >> cy;
ab = distance(ax, ay, bx, by);
bc = distance(bx, by, cx, cy);
ac = distance(ax, ay, cx, cy);
// Используем свойство тупоугольности треугольника: a^2+b^2<c^2
if ((ab * ab + bc * bc < ac * ac) || (ab * ab + ac * ac < bc * bc) || (bc * bc + ac * ac < ab * ab))
{
// Площадь по формуле Герона
double hp = (ab + ac + bc) / 2; // Полупериметр
cout << "Square: " << sqrt(hp * (hp - ab) * (hp - ac) * (hp - bc)) << endl;
cout << max(max(ab, ac), bc) << ", "
<< (ab + ac + bc - min(min(ab, ac), bc) - max(max(ab, ac), bc)) << ", "
<< min(min(ab, ac), bc);
}
else cout << "Entered points cannot be vertices of an obtuse triangle";
return 0;
}



Для решения этой задачи вам понадобится вычислить длины всех сторон треугольника, проверить, является ли он тупоугольным, и если да, то вычислить его площадь и вывести длины сторон в порядке убывания.
Вот пример кода на C++, который выполняет это задание:
cpp#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
// Функция для вычисления расстояния между двумя точками
double distance(double x1, double y1, double x2, double y2) {
return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
int main() {
double x1, y1, x2, y2, x3, y3;
cout << "Введите координаты первой точки (x1 y1): ";
cin >> x1 >> y1;
cout << "Введите координаты второй точки (x2 y2): ";
cin >> x2 >> y2;
cout << "Введите координаты третьей точки (x3 y3): ";
cin >> x3 >> y3;
double side1 = distance(x1, y1, x2, y2);
double side2 = distance(x2, y2, x3, y3);
double side3 = distance(x3, y3, x1, y1);
// Сортировка сторон в порядке убывания
double sides[3] = {side1, side2, side3};
sort(sides, sides + 3, greater<double>());
if (sides[0] * sides[0] > sides[1] * sides[1] + sides[2] * sides[2]) {
// Треугольник тупоугольный
double area = 0.5 * side2 * side3;
cout << "Площадь треугольника: " << area << endl;
cout << "Длины сторон в порядке убывания: " << sides[0] << " " << sides[1] << " " << sides[2] << endl;
} else {
cout << "Треугольник не является тупоугольным." << endl;
}
return 0;
}
Вы можете вставить этот код в среду разработки C++ (например, Code::Blocks, Visual Studio, или онлайн компилятор) и запустить для выполнения задания.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili