В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
B8888
B8888
21.03.2020 13:53 •  Информатика

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

Показать ответ
Ответ:
boss110
boss110
13.10.2020 02:22

#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;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота