Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "math.h"
- using namespace std;
- class paral
- {
- public:
- paral(float sAB, float sBC, float aA, float aB); //прототип конструктора с параметрами
- paral(); //прототип конструктора без параметров
- ~paral(); //прототип деструктора
- float getSquare(); //прототип поиска площади
- float getPerimeter(); //прототип поиска периметра
- friend ostream& operator << (ostream& stream, const paral& p); //прототип функции перегрузки потока вывода
- friend istream& operator >> (istream& stream, paral& p); //прототип функции перегрузки потока ввода
- static int i; //прототип статичной переменной (счетчика объектов(праллелограммов))
- static int getI(); //прототип функции, возвращающей счетчик
- private:
- float sideABandCD, sideBCandAD, angleA, angleB; //закрытые переменные (стороны, углы)
- };
- class tochka
- {
- public:
- float x,y,angle; //координата Х, координата Y и угол.
- float distance(); //прототип функции нахождения расстояния от точки до начала координат
- float distance(tochka a); //прототип функции нахождения расстояния от точки до точки
- tochka() {} //конструктор без параметров с описанием ({} - это описание)
- tochka(float x1, float y1); //прототип конструктора с параметрами (без описания)
- };
- class paralTochka
- {
- public:
- paralTochka(tochka a, tochka b, tochka c, tochka d) : A(a), B(b), C(c), D(d) {}
- ~paralTochka() {}
- float getSquare();
- float getPerimeter();
- friend ostream& operator << (ostream& stream, paralTochka& p); //прототип функции перегрузки потока вывода
- friend istream& operator >> (istream& stream, paralTochka& p); //прототип функции перегрузки потока ввода
- private:
- tochka A, B, C, D; //переменные типа point (вершины пар-ма)
- };
- paral::paral(float sAB, float sBC, float aA, float aB) //конструктор класса с передаваемыми параметрами
- {
- sideABandCD = sAB;
- sideBCandAD = sBC;
- angleA = aA;
- angleB = aB;
- i++; //наращиваем счетчик
- }
- paral::paral() //конструктор без параметров
- {
- i++;
- }
- paral::~paral() //деструктор
- {
- i--;
- }
- int paral::i = 0; //инициализация статической переменной
- int paral::getI() //инициализация статической функции, возвращающей счетчик количества объектов
- {
- return i;
- }
- float paral::getSquare() //функция нахождения площади
- {
- return abs(sideABandCD *sideBCandAD*sin((angleA*3.14)/180));
- }
- float paral::getPerimeter() //функция нахождения периметра
- {
- return 2 * sideABandCD + 2 * sideBCandAD;
- }
- istream& operator>>(istream& stream, paral& p) //перегрузка оператора ввода
- {
- stream>>p.sideABandCD>>p.sideBCandAD>>p.angleA>>p.angleB;
- return stream;
- }
- ostream& operator<<(ostream& stream, const paral& p) //перегрузка оператора вывода
- {
- stream<<"Стороны АB и СD= "<<p.sideABandCD<<endl<<"Стороны ВC и AD= "<<p.sideBCandAD<<endl<<"Углы A и С= "<<p.angleA<<endl<<"Углы B и D= "<<p.angleB<<endl;
- return stream;
- }
- tochka::tochka(float x1, float y1)
- {
- x=x1; y=y1;
- }
- float tochka::distance() //функция нахождения расстояния от точки до начала координат
- {
- return pow(pow(x,2)+pow(y,2),0.5);
- }
- float tochka::distance(tochka a) //функция нахождения расстояния от точки до точки
- {
- return pow(pow(x-a.x,2)+pow(y-a.y,2),0.5);
- }
- float paralTochka::getPerimeter() //функция нахождения периметра
- {
- return (A.distance(B)+A.distance(D))*2;
- }
- float paralTochka::getSquare() //функция нахождения площади
- {
- A.angle = acos((A.x*B.x + A.y*B.y) / ((sqrt(pow(A.x, 2) + pow(A.y, 2)))*(sqrt(pow(B.x, 2) + pow(B.y, 2)))));
- return abs(A.distance(B)*A.distance(D)*sin((A.angle * 180/3.14)));
- }
- istream& operator >> (istream& stream, paralTochka& p) //перегрузка оператора ввода
- {
- stream>>p.A.x>>p.A.y>>p.B.x>>p.B.y >>p.C.x>>p.C.y>>p.D.x>>p.D.y;
- return stream;
- }
- ostream& operator << (ostream& stream, paralTochka& p) //перегрузка оператора вывода
- {
- stream<<"Стороны АB и CD: "<<p.A.distance(p.B)<<endl<<"Стороны AD и BC: "<<p.A.distance(p.D)<<endl;
- return stream;
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- tochka a(0, 0), b(0, 0), c(0,0), d(0, 0);
- paralTochka par(a,b,c,d);
- cout<<"Введите координаты:"<<endl;
- cin>>par;
- cout<<par;
- cout<<"P= "<<par.getPerimeter()<<" S= "<<par.getSquare()<<endl;
- par.~paralTochka();
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement