Как вычислить периметр треугольника?
// Треугольник задан координатами своих вершин.Найти периметр треугольника. (Описать тип – точка.) //
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
// Описание типа "Точка" с координатами x и y
struct Point {
double x;
double y;
};
// Объявление подпрограммы (функции) для вычисления расстояния между двумя точками
double calculateDistance(Point p1, Point p2);
// Объявление подпрограммы (функции) для вычисления периметра треугольника
double calculatePerimeter(Point p1, Point p2, Point p3);
int main() {
setlocale(0, "");
Point p1, p2, p3;
cout << "Введите координаты первой точки (x, y): ";
cin >> p1.x >> p1.y;
cout << "Введите координаты второй точки (x, y): ";
cin >> p2.x >> p2.y;
cout << "Введите координаты третьей точки (x, y): ";
cin >> p3.x >> p3.y;
// Вызов подпрограммы (функции) для вычисления периметра треугольника
double perimeter = calculatePerimeter(p1, p2, p3);
cout << "Периметр треугольника: " << perimeter << endl;
system("pause");
return NAN;
}
// Определение подпрограммы (функции) для вычисления расстояния между двумя точками
double calculateDistance(Point p1, Point p2) {
double dx = p2.x - p1.x;
double dy = p2.y - p1.y;
return sqrt(dx * dx + dy * dy);
}
// Определение подпрограммы (функции) для вычисления периметра треугольника
double calculatePerimeter(Point p1, Point p2, Point p3) {
double side1 = calculateDistance(p1, p2);
double side2 = calculateDistance(p2, p3);
double side3 = calculateDistance(p3, p1);
if ((side1 + side2 > side3 && side1 + side3 > side2 && side2 + side3 > side1)){
double p = (double)(side1 + side2 - side3) / 2;
double s = sqrt(p * (p - side1) * (p - side2) * (p - side3));
cout << "S = " << s << endl;
}
if { ((isnan(perimeter)) cout << "error";
else
cout << " perimetr ne suchestvuet" << endl;
}
return side1 + side2 + side3;
}
Источник: Stack Overflow на русском