5.1 练习判断点和园的关系

练习:判断一个点和园的关系(在圆上,在圆外,在园内)

名词解析法:一般的名词要么是对象,要么是状态

                    动词:方法(判断是方法)

//点对象
class Point
{
	private int x;//横坐标
	private int y;//纵坐标

	Point(int x,int y )
	{
	 this.x = x;
	 this.y = y;
	}
	//得到横坐标
	public int getX()
	{
	 return x;
	}
	//得到纵坐标
	public int getY()
	{
	 return y;
	}
}

//圆对象
class Circle
{
	private int r;//半径
	Circle(int r )
	{
		this.r = r;
	}
	//判断方法
	int judge ( Point p )
	{
	  //先计算点对象到圆心的距离
	  int x = p.getX();
	  int y = p.getY();
	  int d =x*x + y*y; 
	  if ( d > r*r)
	  {
		  return 1;
	  }else if ( d == r*r)
	  {
		  return 0;
	  }else 
	  {
		  return -1;
	  }
	}
}



//练习:判断一个点和园的关系(在圆上,在圆外,在园内
class PointDemo 
{
	public static void main(String[] args) 
	{
		//创建圆心
		Point a = new Point(0,0);
		//创建园
		Circle c1 = new Circle(3);
		//创建一个点
		Point b = new Point(2,2);
		//判断和圆的关系
		int ret = c1.judge(b);
		System.out.println(ret);
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您设计一个计算不同图形面积和周长的程序。首先,我们需要定义一个抽象类 Shape,它包含两个纯虚函数 getArea() 和 getPerimeter(),分别用于计算图形的面积和周长。然后,我们可以定义不同的子类,如 Rectangle、Circle、Triangle 等,它们都继承自 Shape 类,并实现自己的 getArea() 和 getPerimeter() 函数。 以下是一个简单的示例代码: ```cpp #include <iostream> #include <cmath> using namespace std; class Shape { public: virtual double getArea() = 0; virtual double getPerimeter() = 0; }; class Rectangle : public Shape { public: Rectangle(double w, double h) : width(w), height(h) {} double getArea() { return width * height; } double getPerimeter() { return 2 * (width + height); } private: double width, height; }; class Circle : public Shape { public: Circle(double r) : radius(r) {} double getArea() { return M_PI * radius * radius; } double getPerimeter() { return 2 * M_PI * radius; } private: double radius; }; class Triangle : public Shape { public: Triangle(double a, double b, double c) : sideA(a), sideB(b), sideC(c) {} double getArea() { double p = (sideA + sideB + sideC) / 2; return sqrt(p * (p - sideA) * (p - sideB) * (p - sideC)); } double getPerimeter() { return sideA + sideB + sideC; } private: double sideA, sideB, sideC; }; int main() { Shape* shapes[3]; shapes[0] = new Rectangle(3, 4); shapes[1] = new Circle(2); shapes[2] = new Triangle(3, 4, 5); for (int i = 0; i < 3; i++) { cout << "Shape " << i+1 << " area: " << shapes[i]->getArea() << endl; cout << "Shape " << i+1 << " perimeter: " << shapes[i]->getPerimeter() << endl; delete shapes[i]; } return 0; } ``` 这个程序定义了三个子类 Rectangle、Circle 和 Triangle,它们分别代表矩形、圆形和三角形。在 main 函数中,我们创建了一个 Shape 类型的数组,其中存放了三个不同的图形。然后,我们遍历这个数组,分别调用每个图形的 getArea() 和 getPerimeter() 函数,输出它们的面积和周长。 输出结果如下: ``` Shape 1 area: 12 Shape 1 perimeter: 14 Shape 2 area: 12.5664 Shape 2 perimeter: 12.5664 Shape 3 area: 6 Shape 3 perimeter: 12 ``` 可以看到,程序成功计算了三个不同图形的面积和周长。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值