C/C++
Напишите программу, пожалуйста
Даны координаты вершин двух треугольников. Напишите программу, позволяющую определить, площадь которого из них больше, используя для этого подпрограмму вычисления площади треугольника.
#include <iostream>
#include <cmath>
using namespace std;
struct Point {
double x, y;
Point() : x(0), y(0) {}
Point(const double x, const double y) : x(x), y(y) {}
double length(const Point& p)const {
return sqrt(pow(p.x - x, 2) + pow(p.y - y, 2));
}
};
struct Triangle {
Point a, b, c;
Triangle() = default;
Triangle(const Point a, const Point b, const Point c) : a(a), b(b), c(c) {}
double area()const {
auto ab = a.length(b);
auto bc = b.length(c);
auto ca = c.length(a);
auto p = (ab + bc + ca) / 2;
return sqrt(p * (p - ab) * (p - bc) * (p - ca));
}
friend bool operator>(const Triangle& x, const Triangle& y) {
return x.area() > y.area();
}
friend bool operator!=(const Triangle& x, const Triangle& y) {
return x.area() != y.area();
}
};
void flush() {
cin.ignore(cin.rdbuf()->in_avail());
}
Point set_coords(const char* name) {
Point p;
cout << name << "x: ";
cin >> p.x;
flush();
cout << name << "y: ";
cin >> p.y;
flush();
puts("");
return p;
}
Triangle create(const char* title) {
cout << '\t' << title << '\n';
auto a = set_coords("A");
auto b = set_coords("B");
auto c = set_coords("C");
return { a, b, c };
}
int main() {
auto first = create("First:");
auto second = create("Second:");
if (first != second) puts(first > second ? "First" : "Second");
else puts("Equal");
system("pause > nul");
}
#include <cmath>
using namespace std;
struct Point {
double x, y;
Point() : x(0), y(0) {}
Point(const double x, const double y) : x(x), y(y) {}
double length(const Point& p)const {
return sqrt(pow(p.x - x, 2) + pow(p.y - y, 2));
}
};
struct Triangle {
Point a, b, c;
Triangle() = default;
Triangle(const Point a, const Point b, const Point c) : a(a), b(b), c(c) {}
double area()const {
auto ab = a.length(b);
auto bc = b.length(c);
auto ca = c.length(a);
auto p = (ab + bc + ca) / 2;
return sqrt(p * (p - ab) * (p - bc) * (p - ca));
}
friend bool operator>(const Triangle& x, const Triangle& y) {
return x.area() > y.area();
}
friend bool operator!=(const Triangle& x, const Triangle& y) {
return x.area() != y.area();
}
};
void flush() {
cin.ignore(cin.rdbuf()->in_avail());
}
Point set_coords(const char* name) {
Point p;
cout << name << "x: ";
cin >> p.x;
flush();
cout << name << "y: ";
cin >> p.y;
flush();
puts("");
return p;
}
Triangle create(const char* title) {
cout << '\t' << title << '\n';
auto a = set_coords("A");
auto b = set_coords("B");
auto c = set_coords("C");
return { a, b, c };
}
int main() {
auto first = create("First:");
auto second = create("Second:");
if (first != second) puts(first > second ? "First" : "Second");
else puts("Equal");
system("pause > nul");
}
Похожие вопросы
- Напишите программу пожалуйста
- Помогите пожалуйста написать программу на Си
- Помоги пожалуйста написать программу на C++
- Помогите пожалуйста написать программу!
- Пожалуйста, помогите написать программу на С++
- Помогите, пожалуйста, написать программу по нижеописанной задаче!
- Помогите пожалуйста написать программу на С++
- Написать программу на языке Си
- Написать программы на СИ
- Пожалуйста помогите написать программу на С++