Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Классы геометрических фигур
.cpp#include <iostream.h>
#include <stdio.h>
class Error
{
public:
int a;
Error(int a1){a=a1;}
};
class Figure
{
protected:
int x,y;
public:
virtual void InputData(int,int,double)=0;
virtual void ShowParametr()=0;
};
class Square;
class Circle: virtual public Figure
{
protected:
double r;
public:
Circle() {}
void InputData(int x_coord,int y_coord,double rad=1) {x=x_coord; y=y_coord; r=rad;}
void ShowParametr();
friend void Verification(Circle c1, Square s1);
};
class Square: virtual public Figure
{
protected:
double a;
public:
//или пустые конструкторы
Square() {a=1;}
void InputData(int x_coord, int y_coord, double st=1) {x=x_coord; y=y_coord; a=st;}
void ShowParametr();
friend void Verification(Circle c1, Square s1);
};
class IntCircle: public Circle, public Square
{
private:
public:
//Вводятся координаты центры и сторона квадрата,
//в который д.б. вписана окружность
void InputData(int x_coord, int y_coord, double st) {Square::x=Circle::x=x_coord; Square::y=Circle::y=y_coord; a=st; r=a/2;}
void ShowParametr();
};
class IntSquare: public Circle, public Square
{
private:
public:
//Вводятся координаты центра и радиус окружности,
//в которую д.б. вписан квадрат
void InputData(int x_coord, int y_coord, double rad) {Circle::x=Square::x=x_coord; Circle::y=Square::y=y_coord; r=rad; a=r*1.41;}
void ShowParametr();
};
void Circle::ShowParametr()//Вывод координат окружности
{
cout <<"x="<<x<<";y="<<y<<";r="<<r<<"\n";
}
void Square::ShowParametr()//Вывод координат квадрата
{
cout <<"x="<<x<<";y="<<y<<";a="<<a<<"\n";
}
void IntCircle::ShowParametr()//Вывод координат вписанной окружности
{
cout <<"x="<<Circle::x<<";y="<<Circle::y<<";r="<<r<<"\n";
}
void IntSquare::ShowParametr()//Вывод координат вписанного квадрата
{
cout <<"x="<<Square::x<<";y="<<Square::x<<";a="<<a<<"\n";
}
void Verification(Circle cir, Square squ)//Друг
{
if (cir.r==squ.a/2) cout<<"Okruzhnost' m.b. vpisana v kvadrat\n";
else
if (squ.a==(cir.r*141/100)) cout<<"Kvadrat m.b. vpisan v okruzhnost'\n";
else throw Error(1);
}
main()
{
try
{
Circle c1;
Square s1;
IntCircle ic1;
IntSquare is1;
//Ввод данных
c1.InputData(5,5);
s1.InputData(5,5,2);
ic1.InputData(2,2,2);
is1.InputData(2,2,4);
//Вывод на экран
cout<<"Okruzhnost' ";
c1.ShowParametr();
cout<<"Kvadrat ";
s1.ShowParametr();
cout<<"Vpisannaya okruzhnost' ";
ic1.ShowParametr();
cout<<"Vpisanniy kvadrat ";
is1.ShowParametr();
Verification (c1,s1);
}
catch (Error q) {cout<<"Ne mogut bit' vpisani drug v druga!\n";}
catch (...) {cout<<"Another Error!";}
return 0;
}
Соседние файлы в предмете Объектно ориентированное программирование