Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа Окружность и квадрат
.cpp#include "iostream.h"
#include "math.h"
class Error
{
public:
int i;
Error(int k){i=k;}
};
class Figure
{
protected:
int x,y;
public:
virtual void InputData(int,int,double)=0;
virtual void ShowData()=0;
};
class Circle;
class Square: virtual public Figure
{
protected:
double a;
public:
Square(){a=1;}
void InputData(int x_,int y_,double razm)
{x=x_;y=y_;a=razm;}
void ShowData()
{cout<<"Kvadrat: x="<<x<<"; y="<<y<<"; a="<<a<<endl;};
friend void Vpis(Circle, Square);
};
class Circle: virtual public Figure
{
protected:
double r;
public:
Circle(){r=1;}
void InputData(int x_,int y_,double razm)
{x=x_;y=y_;r=razm;}
void ShowData(){cout<<"Okrujnost`: x="<<x<<"; y="<<y<<"; r="<<r<<endl;};
friend void Vpis(Circle, Square);
};
class InCircle: virtual public Circle, virtual public Square
{
public:
void InputData(int x_,int y_,double razm)
{Circle::x=Square::x=x_;
Circle::y=Square::y=y_;
Circle::r=razm;Square::a=razm*2;};
void ShowData()
{cout<<"Vpisanaya okrujnost`: x="<<x<<"; y="<<y<<"; r="<<r<<"; a="<<a<<endl;};
};
class InSquare: virtual public Circle, virtual public Square
{
public:
void InputData(int x_,int y_,double razm)
{Circle::x=Square::x=x_;
Circle::y=Square::y=y_;
Circle::r=sqrt(2)*razm/2;Square::a=razm;};
void ShowData()
{cout<<"Vpisaniy kvadrat: x="<<x<<"; y="<<y<<"; r="<<r<<"; a="<<a<<endl;};
};
void Vpis(Circle C, Square S)
{
if((C.x==S.x)&&(C.y==S.y)&&(C.r==S.a/2))
cout<<"Okrujnost` mojet bit` vpisana";
else
if ((C.x==S.x)&&(C.y==S.y)&&(C.r==1.41*S.a/2))
cout<<"Kvadrat mojet bit` vpisan";
else throw Error(1);
}
void main()
{
Circle c1;
Square s1;
InSquare is1;
InCircle ic1;
try
{
c1.InputData(1,1,1.41);
s1.InputData(1,1,2);
is1.InputData(1,1,2);
ic1.InputData(1,1,5);
c1.ShowData();
s1.ShowData();
ic1.ShowData();
is1.ShowData();
try
{
Vpis(c1,s1);
}
catch(Error a){cout<<"Ne mogut bit' vpisani drug v druga!\n";}
}
catch(...){cout<<"Another Error";}
}
Соседние файлы в предмете Объектно ориентированное программирование