Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cmath>
- using namespace std;
- class Coor {
- public:
- double a;
- double b;
- Coor(double a, double b) :a(a), b(b) {}
- };
- class Chug {
- protected:
- Coor A;
- Coor B;
- Coor C;
- Coor D;
- public:
- Chug(Coor A, Coor B, Coor C, Coor D) :A(A), B(B), C(C), D(D) {}
- Chug() :A(0, 0), B(0, 1), C(1, 0), D(1, 1) {}
- double AB() {
- double AB = pow((pow((A.a - B.a), 2) + pow((A.b - B.b), 2)), 0.5);
- return AB;
- }
- double AC() {
- double AC = pow((pow((A.a - C.a), 2) + pow((A.b - C.b), 2)), 0.5);
- return AC;
- }
- double AD() {
- double AD = pow((pow((A.a - D.a), 2) + pow((A.b - D.b), 2)), 0.5);
- return AD;
- }
- double BC() {
- double BC = pow((pow((C.a - B.a), 2) + pow((C.b - B.b), 2)), 0.5);
- return BC;
- }
- double CD() {
- double CD = pow((pow((C.a - D.a), 2) + pow((C.b - D.b), 2)), 0.5);
- return CD;
- }
- double BD() {
- double BD = pow((pow((D.a - B.a), 2) + pow((D.b - B.b), 2)), 0.5);
- return BD;
- }
- double S() {
- double p = P() / 2;
- return pow((p - AB()) * (p - BC()) * (p - CD()) * (p - AD()), 0.5);
- }
- double P() {
- return AB() + BC() + CD() + AD();
- }
- void printinfo() {
- cout << "AB: " << AB() << endl;
- cout << "BC: " << BC() << endl;
- cout << "CD: " << CD() << endl;
- cout << "AD: " << AD() << endl;
- cout << "диагональ АС: " << AC() << endl;
- cout << "диагональ BD: " << BD() << endl;
- cout << "площадь S: " << S() << endl;
- cout << "периметр Р: " << P() << endl;
- }
- };
- class Romb :public Chug
- {
- public:
- Romb(Coor A, Coor B, Coor C, Coor D) :Chug(A, B, C, D) {}
- Romb() :Chug() {}
- bool proverka() {
- if ((AB() == BC()) && (AB() == CD()) && (AB() == AD()) && (BC() == CD()) && (BC() == AD()) && (CD() == AD()))
- return 1;
- else return 0;
- }
- };
- int main() {
- int N;//число четырехугольников
- int M;//число ромбов
- cout << "Введите число четырехугольников: ";
- cin >> N;
- cout << endl;
- cout << "Введите число ромбов: ";
- cin >> M;
- cout << endl;
- Chug* arr = new Chug[N];
- Romb* romb = new Romb[M];
- int min = 100000000;
- for (int i = 1; i <= N; i++) {
- cout << i << ")" << " Четырехугольник" << endl;
- double a1, b1;
- double a2, b2;
- double a3, b3;
- double a4, b4;
- cout << "Введите координаты точки А: ";
- cin >> a1 >> b1;
- cout << endl;
- cout << "Введите координаты точки B: ";
- cin >> a2 >> b2;
- cout << endl;
- cout << "Введите координаты точки C: ";
- cin >> a3 >> b3;
- cout << endl;
- cout << "Введите координаты точки D: ";
- cin >> a4 >> b4;
- cout << endl;
- Coor A(a1, b1), B(a2, b2), C(a3, b3), D(a4, b4);
- arr[i] = Chug(A, B, C, D);
- arr[i].printinfo();
- if (arr[i].S() < min) {
- min = arr[i].S();
- }
- cout << "___________________________" << endl;
- }
- cout << "Минимальная площадь четырехугольника = " << min << endl;
- cout << "___________________________" << endl;
- double srS = 0;
- for (int i = 1; i <= M; i++) {
- cout << i << ")" << " Ромб" << endl;
- double a1, b1;
- double a2, b2;
- double a3, b3;
- double a4, b4;
- cout << "Введите координаты точки А: ";
- cin >> a1 >> b1;
- cout << endl;
- cout << "Введите координаты точки B: ";
- cin >> a2 >> b2;
- cout << endl;
- cout << "Введите координаты точки C: ";
- cin >> a3 >> b3;
- cout << endl;
- cout << "Введите координаты точки D: ";
- cin >> a4 >> b4;
- Coor A(a1, b1), B(a2, b2), C(a3, b3), D(a4, b4);
- romb[i] = Romb(A, B, C, D);
- if (romb[i].proverka()) {
- srS += arr[i].S();
- }
- else {
- srS += 0;
- }
- romb[i].printinfo();
- }
- double sr = srS / M;
- cout << "Средняя площадь: " << sr << endl;
- delete[]arr;
- delete[]romb;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement