C/C++
Написать программу на С++ определения площади пятиугольника с заданными координатами его вершин.
Написать программу на С++ определения площади пятиугольника с заданными координатами его вершин (x1, y1), (x2, y2), (х3у3), (х4.y4), (х5,y5) как сумму площадей трех треугольников. Площадь треугольника, определенную по координатам вершин, рассчитать с помощью функции.
#include <iostream>
#include <cmath>
using namespace std;
double coord(istream& inp, const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(numeric_limits<size_t>::max(), '\n');
return value;
}
struct Point {
double x, y;
Point() : x(0), y(0) {}
double length(const Point& p)const {
return sqrt(pow(p.x - x, 2) + pow(p.y - y, 2));
}
private:
friend istream& operator>>(istream& inp, Point& p) {
p.x = coord(inp, "x: ");
p.y = coord(inp, "y: ");
return inp;
}
};
struct Triangle {
Point a, b, c;
Triangle() = default;
Triangle(const Point& a, const Point& b, const Point& c) : a(a), b(b), c(c) {}
bool exist()const {
return argument() > 0;
}
double perimeter()const {
return a.length(b) + b.length(c) + c.length(a);
}
double area()const {
return sqrt(argument());
}
private:
double argument()const {
auto p = perimeter() / 2.0;
return p * (p - a.length(b)) * (p - b.length(c)) * (p - c.length(a));
}
};
Point point(const char* msg) {
cout << msg;
Point p;
cin >> p;
return p;
}
int main() {
auto a = point("Point A:\n");
auto b = point("Point B:\n");
auto c = point("Point C:\n");
auto d = point("Point D:\n");
auto e = point("Point E:\n");
Triangle abc(a, b, c);
Triangle acd(a, c, d);
Triangle ade(a, d, e);
if (abc.exist() && acd.exist() && ade.exist()) {
auto area = abc.area() + acd.area() + ade.area();
cout << "Area: " << area << '\n';
}
else {
puts("The pentagon doesn't exist!");
}
system("pause > nul");
}
P.S. Для выпуклого пятиугольника.
#include <cmath>
using namespace std;
double coord(istream& inp, const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(numeric_limits<size_t>::max(), '\n');
return value;
}
struct Point {
double x, y;
Point() : x(0), y(0) {}
double length(const Point& p)const {
return sqrt(pow(p.x - x, 2) + pow(p.y - y, 2));
}
private:
friend istream& operator>>(istream& inp, Point& p) {
p.x = coord(inp, "x: ");
p.y = coord(inp, "y: ");
return inp;
}
};
struct Triangle {
Point a, b, c;
Triangle() = default;
Triangle(const Point& a, const Point& b, const Point& c) : a(a), b(b), c(c) {}
bool exist()const {
return argument() > 0;
}
double perimeter()const {
return a.length(b) + b.length(c) + c.length(a);
}
double area()const {
return sqrt(argument());
}
private:
double argument()const {
auto p = perimeter() / 2.0;
return p * (p - a.length(b)) * (p - b.length(c)) * (p - c.length(a));
}
};
Point point(const char* msg) {
cout << msg;
Point p;
cin >> p;
return p;
}
int main() {
auto a = point("Point A:\n");
auto b = point("Point B:\n");
auto c = point("Point C:\n");
auto d = point("Point D:\n");
auto e = point("Point E:\n");
Triangle abc(a, b, c);
Triangle acd(a, c, d);
Triangle ade(a, d, e);
if (abc.exist() && acd.exist() && ade.exist()) {
auto area = abc.area() + acd.area() + ade.area();
cout << "Area: " << area << '\n';
}
else {
puts("The pentagon doesn't exist!");
}
system("pause > nul");
}
P.S. Для выпуклого пятиугольника.
Похожие вопросы
- Написать программу в С++ (нахождение площади трапеции)
- Написать программу на C++.Создать класс vector3d, задаваемый тройкой координат. Создать конструктор...
- Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде
- Как разбить на тетраэдры фигуру, зная координаты её вершин? Алгоритм.
- Напишите программу на С++ на заданную задачу
- Написать программу на языке Си
- Написать программы на СИ
- Помогите написать программу на С++
- Некорректно работает написанная программа
- В LINUX OS Написать программу, которая из командной строки получает целое число N и некоторый текст “Text”.