Операційні системи Зербіно Д.Д. / 2ооп
.docx11 варіант
Створити клас – квадрат з полями у закритій частині: координати головної діагоналі. Визначити необхідні конструктори, методи доступу, деструктор.Перевантажити потокові операції введення і виведення, операції + (збільшення головної діагоналі), – (зменшення головної діагоналі), порівняння за периметром < , > та == .
//Підключаємнеобхіднібібліотеки
#include<iostream>
#include <cmath>
////////////////////////////////////
//Підключаємпостірімен
using namespace std;
////////////////////////////////////
classkvadrat
{
//Зихищеначастина
private:
//Координати
int x1, y1, x2, y2;
//Відкритачастина
public:
//Прототипи
//Конструкторибузпараметрів і з параметрами і деструктор
kvadrat();
kvadrat(int , int , int, int);
~kvadrat();
//функціяперевіркивведення
voidperevirka();
//функціяквадрату
doublesqr(double );
//функціязаданняпершоїточки
void setPole1();
//функціязаданнядругоїточки
void setPole2();
//Взяттяточок
int getX1();
int getX2();
int getY1();
int getY2();
//вертаєдовжинусторони
doublestorona();
//ВИводеплощуквадрата
voidploshcha();
//виводе периметр квадрата
doubleperumetr();
//перевизначаємоператири + і -
void operator + (int);
void operator - (int);
//перевизначаємлогічніелементи
int operator < (kvadrat&);
int operator > (kvadrat&);
int operator == (kvadrat&);
//перевизначаємпотокивведенняівиведення
friendistream& operator >> (istream&, kvadrat&);
friendostream& operator << (ostream&, kvadrat&);
};
////////////////////////////////////
istream& operator >> (istream& is, kvadrat& x)
{
cout<< "Vveditznachennya x i y pershoyitochkipotimdrygoyi" <<endl;
//зчитуємкоординати
is>> x.x1 >> x.y1 >> x.x2 >> x.y2;
cout<<endl;
return is;
}
////////////////////////////////////
ostream& operator << (ostream&os, kvadrat& x)
{
//виводимточки
os<< "Tochka x1 = " << x.x1 << "\nTochka y1 = " << x.y1 << "\nTochka x2 = " << x.x2 << "\nTochka y2 = " << x.y2 <<endl;
returnos;
}
////////////////////////////////////
voidkvadrat::operator + (int x)
{
//збільшуємкоординати на х
x2 += x;
y2 += x;
}
////////////////////////////////////
voidkvadrat::operator - (int x)
{
//збменшуємкоординати на х
x2 -= x;
y2 -= x;
}
////////////////////////////////////
intkvadrat::operator < (kvadrat& x)
{
//якщовінменшийвідсилаємвірність
if(this->perumetr() <x.perumetr())
return 1;
else
return 0;
}
////////////////////////////////////
intkvadrat::operator > (kvadrat& x)
{
//якщовінбільшийвідсилаємвірність
if(this->perumetr() >x.perumetr())
return 1;
else
return 0;
}
////////////////////////////////////
intkvadrat::operator == (kvadrat& x)
{
//якщовонирівнівідсилаємвірність
if(this->perumetr() == x.perumetr())
return 1;
else
return 0;
}
////////////////////////////////////
kvadrat::kvadrat()
{
//онулюємвсікоординати
x1 = x2 = y1 = y2 = 0;
}
////////////////////////////////////
kvadrat::kvadrat(int x1, int y1, int x2, int y2)
{
//переприсвоюємзначенняпотрібнимзмінним
this->x1 = x1;
this->x2 = x2;
this->y1 = y1;
this->y2 = y2;
}
////////////////////////////////////
kvadrat::~kvadrat()
{
//Тут пусто боневиділялипамяті
}
////////////////////////////////////
voidkvadrat::perevirka()
{
//Якщоякасьзміннявідємнавиводимданеповідомлення
if(x1 < 0 || x2 < 0 || y1 < 0 || y2 < 0)
cout<< "Danivvedenonepravulno!" <<endl;
}
////////////////////////////////////
doublekvadrat::storona()
{
//Рахуємдовжинудіагоналі
double k = sqrt(sqr(x1 - x2) + sqr(y1 - y2));
//рахуємдовжинусторони квадрату
double q = k / sqrt(2.0);
//Вертаємзначення
return q;
}
////////////////////////////////////
voidkvadrat::ploshcha()
{
//Виводимплощу
cout<< "Ploshchakvadrata = " <<sqr(this->storona()) <<endl;
}
////////////////////////////////////
doublekvadrat::perumetr()
{
//Передаємпериметр
return 4 * this->storona();
}
////////////////////////////////////
doublekvadrat::sqr(double x)
{
//Вертаєм квадрат
return x * x;
}
////////////////////////////////////
int main()
{
//Оголошуємзмінні
kvadrat a, b(1, 1, 2, 2);
//Зчитуємкоординати
cin>> a;
//виводимкоординати
cout<< a;
//Виводимпериметри і площіквадратів
cout<< "Perumetr = " <<a.perumetr() <<endl;
a.ploshcha();
cout<< "Perumetr = " <<b.perumetr() <<endl;
b.ploshcha();
if(a < b)
cout<< "a < b" <<endl;
else
if(a > b)
cout<< "a > b" <<endl;
else
if(a == b)
cout<< "a == b" <<endl;
a + 3;
cout<< a <<endl;
a - 2;
cout<< a <<endl;
//Оччищуємбуфер
fflush(stdin);
//Затримка
getchar();
//Вертаємпрограмі 0
return 0;
}