Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #define RAD 57.295779513082320876798
- using namespace std;
- class Triangle {
- public:
- Triangle(double, double, double);
- ~Triangle() { a = b = c = p = 0; };
- double get_area()const;
- double get_perimetre()const;
- void show_parties()const;
- void show_perimetre()const;
- void show_area()const;
- void show_corners()const;
- private:
- Triangle();
- void calc_area();
- void calc_corners();
- void exists();
- bool is; // существование
- // стороны
- double a;
- double b;
- double c;
- double p; // периметр
- double area; // площадь
- // углы
- double alpha;
- double betta;
- double gamma;
- };
- void ru();
- int main() {
- ru();
- Triangle tr(3, 4, 5);
- tr.show_perimetre();
- tr.show_area();
- tr.show_corners();
- tr.show_parties();
- double area = tr.get_area();
- double perimetre = tr.get_perimetre();
- wcout << endl << L" Площадь: " << area << endl
- << L" Периметр: " << perimetre << endl;
- cin.get(); cin.get();
- return 0;
- }
- void ru() {
- wcout.imbue(locale("rus_rus.866"));
- wcin.imbue(locale("rus_rus.866"));
- }
- void Triangle::exists() {
- double max = (a > b) ? (a > c) ? a : c : (b > c) ? b : c;
- if (max >= p - max) is = false;
- else is = true;
- }
- Triangle::Triangle(double _a, double _b, double _c)
- : a(_a), b(_b), c(_c), p(_a + _b + _c)
- {
- exists();
- if (!is) {
- wcout << L" Треугольник не существует!\a\n";
- Triangle::~Triangle();
- } else {
- calc_area();
- calc_corners();
- }
- }
- void Triangle::calc_area() {
- double pp = p / 2;
- area = sqrt(pp * (pp - a) * (pp - b) * (pp - c));
- }
- void Triangle::calc_corners() {
- alpha = RAD * acos((b * b + c * c - a * a) / (2 * b * c));
- betta = RAD * acos((a * a + c * c - b * b) / (2 * a * c));
- gamma = RAD * acos((a * a + b * b - c * c) / (2 * a * b));
- }
- void Triangle::show_parties()const {
- if (is)
- wcout << L" Длина стороны а = " << a << endl
- << L" Длина стороны b = " << b << endl
- << L" Длина стороны c = " << c << endl;
- }
- void Triangle::show_corners()const {
- if (is) {
- unsigned char sign = 248;
- wcout << L" Угол между сторонами а и b = " << gamma << sign << endl
- << L" Угол между сторонами b и c = " << alpha << sign << endl
- << L" Угол между сторонами a и c = " << betta << sign << endl;
- }
- }
- void Triangle::show_perimetre()const { if (is) wcout << L" Периметр треугольника = " << p << endl; }
- void Triangle::show_area()const { if (is) wcout << L" Площадь треугольника = " << area << endl; }
- double Triangle::get_area()const {
- if (is) return area;
- else return 0;
- }
- double Triangle::get_perimetre()const { return p; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement