#include <iostream>
#include <fstream>
using namespace std;
int counter = 1 ; // счетчик. Для форматированного вывода экземпляров
class Pyramid {
friend double Perimetr( const Pyramid& pyramid) ;
public :
double x, h, a; // x - сторона основания, h - высота, a - апофема
Pyramid( ) {
cout << endl << "--------------------------------------------------" << endl;
cout << "Этот обьект был создан в конструкторе по умолчанию. Область: " << this << endl;
x = h = a = 3 ;
}
Pyramid( double p, double k, double q) {
cout << endl << "--------------------------------------------------" << endl;
cout << "Этот обьект был создан в конструкторе с параметрами. Область: " << this << endl;
x = p;
h = k;
a = q;
}
Pyramid( const Pyramid& obj) {
cout << endl << "--------------------------------------------------" << endl;
cout << "Этот обьект был создан в конструкторе копирования. Область: " << this << endl;
this- > x = obj.x ;
this- > h = obj.h ;
this- > a = obj.a ;
}
Pyramid& operator= ( const Pyramid& obj) {
if ( this ! = & obj) {
this- > x = obj.x ;
this- > h = obj.h ;
this- > a = obj.a ;
}
return * this ;
}
Pyramid operator+ ( const Pyramid& b) {
Pyramid temp;
temp.x = this- > x + b.x ;
temp.h = this- > h + b.h ;
temp.a = this- > a + b.a ;
return temp;
}
void SHOW( ) {
cout << endl << "--------------------------------------------------" << endl;
cout << " p" << counter << "\t x --> " << x << ";\t h --> " << h << ";\t a --> " << a << endl;
}
~Pyramid( ) {
cout << endl << "--------------------------------------------------" << endl;
cout << "Удаление объекта в области " << this << " деструктором.\n " ;
}
private :
double Sb = 10 ;
} ;
double Perimetr( const Pyramid& pyramid) ;
int main( ) {
setlocale( 0 , "" ) ;
Pyramid p1, p2( 2 , 4 , 6 ) ;
p1.SHOW ( ) ; counter++ ;
p2.SHOW ( ) ;
counter = 1 ;
p1 = p2;
cout << "\n Приравнял p1 к p2 -->>\n " ;
p1.SHOW ( ) ; counter++ ;
p2.SHOW ( ) ;
Pyramid p3 = p1 + p2;
cout << "\n Сложил p1 и p2 -->>\n " ;
counter = 1 ;
p1.SHOW ( ) ; counter++ ;
p2.SHOW ( ) ;
return 0 ;
}
double Perimetr( const Pyramid& pyramid)
{
return ( 2 * pyramid.Sb ) / pyramid.a ; // формула из файла "Ф?ГУРИ"
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGNvdW50ZXIgPSAxOyAvLyDRgdGH0LXRgtGH0LjQui4g0JTQu9GPINGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC90L7Qs9C+INCy0YvQstC+0LTQsCDRjdC60LfQtdC80L/Qu9GP0YDQvtCyCgpjbGFzcyBQeXJhbWlkIHsKICAgIGZyaWVuZCBkb3VibGUgUGVyaW1ldHIoY29uc3QgUHlyYW1pZCYgcHlyYW1pZCk7CnB1YmxpYzoKICAgIGRvdWJsZSB4LCBoLCBhOyAvLyB4IC0g0YHRgtC+0YDQvtC90LAg0L7RgdC90L7QstCw0L3QuNGPLCBoIC0g0LLRi9GB0L7RgtCwLCBhIC0g0LDQv9C+0YTQtdC80LAKICAgIFB5cmFtaWQoKSB7CiAgICAgICAgY291dCA8PCBlbmRsIDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICLQrdGC0L7RgiDQvtCx0YzQtdC60YIg0LHRi9C7INGB0L7Qt9C00LDQvSDQsiDQutC+0L3RgdGC0YDRg9C60YLQvtGA0LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uINCe0LHQu9Cw0YHRgtGMOiAiIDw8IHRoaXMgPDwgZW5kbDsKICAgICAgICB4ID0gaCA9IGEgPSAzOwogICAgfQogICAgUHlyYW1pZChkb3VibGUgcCwgZG91YmxlIGssIGRvdWJsZSBxKSB7CiAgICAgICAgY291dCA8PCBlbmRsIDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICLQrdGC0L7RgiDQvtCx0YzQtdC60YIg0LHRi9C7INGB0L7Qt9C00LDQvSDQsiDQutC+0L3RgdGC0YDRg9C60YLQvtGA0LUg0YEg0L/QsNGA0LDQvNC10YLRgNCw0LzQuC4g0J7QsdC70LDRgdGC0Yw6ICIgPDwgdGhpcyA8PCBlbmRsOwogICAgICAgIHggPSBwOwogICAgICAgIGggPSBrOwogICAgICAgIGEgPSBxOwogICAgfQogICAgUHlyYW1pZChjb25zdCBQeXJhbWlkJiBvYmopIHsKICAgICAgICBjb3V0IDw8IGVuZGwgPDwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgItCt0YLQvtGCINC+0LHRjNC10LrRgiDQsdGL0Lsg0YHQvtC30LTQsNC9INCyINC60L7QvdGB0YLRgNGD0LrRgtC+0YDQtSDQutC+0L/QuNGA0L7QstCw0L3QuNGPLiDQntCx0LvQsNGB0YLRjDogIiA8PCB0aGlzIDw8IGVuZGw7CiAgICAgICAgdGhpcy0+eCA9IG9iai54OwogICAgICAgIHRoaXMtPmggPSBvYmouaDsKICAgICAgICB0aGlzLT5hID0gb2JqLmE7CiAgICB9CiAgICBQeXJhbWlkJiBvcGVyYXRvcj0oY29uc3QgUHlyYW1pZCYgb2JqKSB7CiAgICAgICAgaWYgKHRoaXMgIT0gJm9iaikgewogICAgICAgICAgICB0aGlzLT54ID0gb2JqLng7CiAgICAgICAgICAgIHRoaXMtPmggPSBvYmouaDsKICAgICAgICAgICAgdGhpcy0+YSA9IG9iai5hOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9CiAgICBQeXJhbWlkIG9wZXJhdG9yKyhjb25zdCBQeXJhbWlkJiBiKSB7CiAgICAgICAgUHlyYW1pZCB0ZW1wOwogICAgICAgIHRlbXAueCA9IHRoaXMtPnggKyBiLng7CiAgICAgICAgdGVtcC5oID0gdGhpcy0+aCArIGIuaDsKICAgICAgICB0ZW1wLmEgPSB0aGlzLT5hICsgYi5hOwogICAgICAgIHJldHVybiB0ZW1wOwogICAgfQogICAgdm9pZCBTSE9XKCkgewogICAgICAgIGNvdXQgPDwgZW5kbCA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIDw8IGVuZGw7CiAgICAgICAgY291dCA8PCAiICBwIiA8PCBjb3VudGVyIDw8ICJcdHggLS0+ICIgPDwgeCA8PCAiO1x0aCAtLT4gIiA8PCBoIDw8ICI7XHRhIC0tPiAiIDw8IGEgPDwgZW5kbDsKICAgIH0KICAgIH5QeXJhbWlkKCkgewogICAgICAgIGNvdXQgPDwgZW5kbCA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIDw8IGVuZGw7CiAgICAgICAgY291dCA8PCAi0KPQtNCw0LvQtdC90LjQtSDQvtCx0YrQtdC60YLQsCDQsiDQvtCx0LvQsNGB0YLQuCAiIDw8IHRoaXMgPDwgIiDQtNC10YHRgtGA0YPQutGC0L7RgNC+0LwuXG4iOwogICAgfQpwcml2YXRlOgogICAgZG91YmxlIFNiID0gMTA7Cn07Cgpkb3VibGUgUGVyaW1ldHIoY29uc3QgUHlyYW1pZCYgcHlyYW1pZCk7CgppbnQgbWFpbigpIHsKICAgIHNldGxvY2FsZSgwLCAiIik7CiAgICBQeXJhbWlkIHAxLCBwMigyLCA0LCA2KTsKICAgIHAxLlNIT1coKTsgY291bnRlcisrOwogICAgcDIuU0hPVygpOwogICAgY291bnRlciA9IDE7CgogICAgcDEgPSBwMjsKICAgIGNvdXQgPDwgIlxu0J/RgNC40YDQsNCy0L3Rj9C7IHAxINC6IHAyIC0tPj5cbiI7CiAgICBwMS5TSE9XKCk7IGNvdW50ZXIrKzsKICAgIHAyLlNIT1coKTsKCiAgICBQeXJhbWlkIHAzID0gcDEgKyBwMjsKICAgIGNvdXQgPDwgIlxu0KHQu9C+0LbQuNC7IHAxINC4IHAyIC0tPj5cbiI7CiAgICBjb3VudGVyID0gMTsKICAgIHAxLlNIT1coKTsgY291bnRlcisrOwogICAgcDIuU0hPVygpOwoKICAgIHJldHVybiAwOwp9Cgpkb3VibGUgUGVyaW1ldHIoY29uc3QgUHlyYW1pZCYgcHlyYW1pZCkKewogICAgcmV0dXJuICgyICogcHlyYW1pZC5TYikgLyBweXJhbWlkLmE7IC8vINGE0L7RgNC80YPQu9CwINC40Lcg0YTQsNC50LvQsCAi0KQ/0JPQo9Cg0JgiCn0K