圆形内接正方形-类——C++程序

1、定义Circle类和Square类,Circle类的成员变量为半径和面积,Square类的成员变量为边长和面积。

2、生成Circle类对象和Square类对象,并让Square类对象内接Circle类对象。

3、给定Square类对象的边长,调用各自的计算面积的成员函数,分别计算各自的面积。

#include <iostream>
#include <math.h>

using namespace std;

#define PI 3.14
#define SQUARE_OUTSIDE 0 //1://外方内圆  0:外圆内方


class Square
{
public:
    Square(double l):mL(l){mArea = mL * mL;}
    double getArea()
    {
        return mArea;
    }
    double getLength()
    {
        return mL;
    }

private:
    double mL;
    double mArea;
};

class Circle
{
public:
#if (SQUARE_OUTSIDE == 1)
    Circle(Square *square):mR(square->getLength()/2.0){mArea = mR * mR * PI;}
#else
    Circle(Square *square):mR(sqrt((square->getLength()*square->getLength()/2.0))){mArea = mR * mR * PI;}
#endif
    double getArea()
    {
        return mArea;
    }
    //这是另外一种算法,这种方法构造函数不需要带参数
    double getArea(Square *square)
    {
#if (SQUARE_OUTSIDE == 1)
        mArea = square->getArea() * (PI/4);
#else
        mArea = square->getArea()/2 * PI;
#endif
        return mArea;
    }

private:
    double mR;
    double mArea;
};

int main()
{
    double a = 1.414213;//a=根号2  r=1;
#if (SQUARE_OUTSIDE == 1)
    a = 12.0; //a=12  r=6;
#endif
    Square square(a);
    std::cout << "Square Area: " << square.getArea() << std::endl;
    Circle circle(&square);
    std::cout << "Circle Area1: " << circle.getArea() << std::endl;
    std::cout << "Circle Area2: " <<circle.getArea(&square) << std::endl;

    return 0;
}

#include
using namespace std;
#define PI 3.14
class Circle;
class Square;

class Circle
{
public:
Circle(float m){r=m;};
float Cir_area(){
return PI*r*r;
};
private:
float r;
};

class Square
{
public:
Square(float n){a=n;};
float Squ_area(){
return a*a;
};
private:
float a;
};

int main()
{
float m,n;
cout<<"请输入圆的半径:";
cin>>m;
n=1.41*m;
Circle c(m);
cout<<"圆的面积为:"<<c.Cir_area()<<endl;
Square s(n);
cout<<"圆的内接正方形面积为:"<<s.Squ_area()<<endl;
return 0;
}