# misha5

Dec 7th, 2020
182
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. #include <iostream>
2. #include <vector>
3. #include <math.h>
4.
5. using namespace std;
6.
7. class Triangle {
8. protected:
9.     int x1, y1;
10.     int x2, y2;
11.     int x3, y3;
12.     double a, b, c;
13. public:
14.     Triangle() {
15.         x1 = 0; y1 = 0;
16.         x2 = 0; y2 = 1;
17.         x3 = 1; y3 = 0;
18.         a = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
19.         b = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
20.         c = sqrt(pow(x1 - x3, 2) + pow(y1 - y3, 2));
21.     }
22.     Triangle(int x1, int y1, int x2, int y2, int x3, int y3) {
23.         this->x1 = x1; this->y1 = y1;
24.         this->x2 = x2; this->y2 = y2;
25.         this->x3 = x3; this->y3 = y3;
26.         a = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
27.         b = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
28.         c = sqrt(pow(x1 - x3, 2) + pow(y1 - y3, 2));
29.     }
30.     bool is() {
31.         return ((a + b > c) && (b + c > a) && (c + a > b));
32.     }
33.
34.     double P() {
35.         return a + b + c;
36.     }
37.     double S() {
38.         double p = (a + b + c) / 2.0;
39.         return sqrt(p * (p - a) * (p - b) * (p - c));
40.
41.     }
42.     double geta() {
43.         return a;
44.     }
45.     double getb() {
46.         return b;
47.     }
48.     double getc() {
49.         return c;
50.     }
51.
52.     void print() {
53.         double ugol1 = acos((a * a + b * b - c * c) / (2 * a * b));
54.         double ugol2 = acos((c * c + b * b - a * a) / (2 * c * b));
55.         double ugol3 = acos((c * c + a * a - b * b) / (2 * c * a));
56.         cout << "Triangle:\n"
57.             << "\t" << "len1: " << a << "\n"
58.             << "\t" << "len2: " << b << "\n"
59.             << "\t" << "len3: " << c << "\n"
60.             << "\t" << "ugol1: " << ugol1 << "\n"
61.             << "\t" << "ugol2: " << ugol2 << "\n"
62.             << "\t" << "ugol3: " << ugol3 << "\n"
63.             << "\t" << "P: " << P() << "\n"
64.             << "\t" << "S: " << S() << "\n";
65.     }
66.
67.     ~Triangle() {}
68. };
69.
70. class IsoTriangle : public Triangle {
71. public:
72.     IsoTriangle() {
73.         x1 = 0; y1 = 0;
74.         x2 = 0; y2 = 1;
75.         x3 = 1; y3 = 0;
76.         a = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
77.         b = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
78.         c = sqrt(pow(x1 - x3, 2) + pow(y1 - y3, 2));
79.     }
80.     IsoTriangle(int x1, int y1, int x2, int y2, int x3, int y3) {
81.         this->x1 = x1; this->y1 = y1;
82.         this->x2 = x2; this->y2 = y2;
83.         this->x3 = x3; this->y3 = y3;
84.         a = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
85.         b = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
86.         c = sqrt(pow(x1 - x3, 2) + pow(y1 - y3, 2));
87.     }
88.
89.     bool is_iso() {
90.         return (a == b || b == c || c == a);
91.     }
92.
93.
94.     ~IsoTriangle() {}
95. };
96.
97. int main(void) {
98.     int n;
99.     int m;
100.     cin >> n >> m;
101.     Triangle *arr = new Triangle[n];
102.     int x1, y1;
103.     int x2, y2;
104.     int x3, y3;
105.     for (int i = 0; i < n; ++ i) {
106.         cout << "Triangle" << i << endl;
107.         cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
108.         arr[i] = Triangle(x1, y1, x2, y2, x3, y3);
109.     }
110.     IsoTriangle mx;
111.     bool flag = false;
112.     for (int i = 0; i < m; ++ i) {
113.         cout << "IsoTriangle" << i << endl;
114.         cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
115.         IsoTriangle tmp = IsoTriangle(x1, y1, x2, y2, x3, y3);
116.         if (!tmp.is_iso()) {
117.             cout << "Error\n";
118.             i --;
119.         }
120.         else {
121.             if (!flag) {
122.                 flag = true;
123.                 mx = tmp;
124.             }
125.             else {
126.                 if (tmp.S() > mx.S())
127.                     mx = tmp;
128.             }
129.         }
130.     }
131.     for (int i = 0; i < n; ++ i) {
132.         for (int j = 0; j < n; ++ j) {
133.             if (i != j) {
134.                 double d = arr[i].geta() / arr[j].geta();
135.                 if (arr[i].getb() / arr[j].getb() == d && arr[i].getc() / arr[j].getc() == d) {
136.                     cout << "Podob:\n";
137.                     arr[i].print();
138.                     arr[j].print();
139.                     cout << endl;
140.                 }
141.             }
142.         }
143.     }
144.     mx.print();
145.     delete [] arr;
146. }
RAW Paste Data Copied