您现在的位置是:首页 >其他 >【id:30】【20分】C. 点和圆 (类与对象)网站首页其他

【id:30】【20分】C. 点和圆 (类与对象)

Z1Jxxx 2023-07-15 00:00:03
简介【id:30】【20分】C. 点和圆 (类与对象)


一、题目描述

设计一个点类Point,包含属性:x坐标和y坐标,方法:设定坐标(setPoint),获取x坐标(getX),获取y坐标(getY)

设计一个圆类Circle,包含属性:圆心坐标x和y、半径r;方法包括:

  1. 设定圆心(setCenter),设置圆心x坐标和y坐标

  2. 设定半径(setRadius),设置半径长度

  3. 计算面积(getArea),计算公式:面积=3.14rr

  4. 计算周长(getLength),计算公式:周长=23.14r

  5. 包含(contain),判断一个圆是否包含一个点,计算圆心到这个点的距离,然后和半径做比较,大于则不包含,小于等于则包含

注意:提交代码时必须用注释划分出三个区域:类定义、类实现、主函数,如下

//-----类定义------

class XXX

{

};

//----类实现------

void XXX::process()

{

};

//-----主函数-----

int main()

{

    //自定义一些变量

    //创建一个圆对象和一个点对象

   //输入圆对象和点对象的属性数值,并做初始化

   //输出圆的面积和圆的周长

   //输出圆是否包含点,包含则输出yes,否则输出no

   return 0;

}


二、输入与输出

1.输入

第一行输入圆的三个整数参数:圆心的x和y坐标,半径

第二行输入点的两个整数参数:x和y坐标

1 1 1
2 2

2.输出

第一行输出圆的面积和周长,结果之间用空格隔开,输出精度到小数点后2位

第二行输出圆是否包含点,包含则输出yes,否则输出no

在C++中,输出指定精度的参考代码如下:

#include

#include //必须包含这个头文件

using namespace std;

void main( )

{

    double a =3.14;

    cout<<fixed<<setprecision(3)<<a<<endl;  //输出小数点后3位

}

3.14 6.28
no

提示

求两点距离的公式 dis =sqrt [ (x1-x2)^2 + (y1-y2)^2 ] , ^2表示平方,sqrt表示开平方根,本公式只是表示含义,不是真实代码

在C++使用sqrt函数可以求平方根,头文件包含cmath


三、参考代码

#include <iostream>
#include <iomanip>
#include <string.h>
#include <cmath>
using namespace std;
class point {
	private:
		double x,y;
	public:
		void setpoint(double x1,double y1)
		{
			x=x1;
			y=y1;
		}
		double getx() {
			return x;
		}
		double gety() {
			return y;
		}
};
class cir {
	private:
		double x,y,r;
	public:
		void set(double x2,double y2,double r1) {
			x=x2;
			y=y2;
			r=r1;
		}
		double setarea() {
			double S=3.14*r*r;
			return S;
		}
		double setlen() {
			double D=2*3.14*r;
			return D;
		}
		bool con(point a) {
			double len=sqrt((a.getx()-x)*(a.getx()-x)+(a.gety()-y)*(a.gety()-y));
			if(len>r) {
				return 0;
			} else  {
				return 1;
			}
		}

};



int main() {
	double x1,y1,r1;
	double x2,y2;
	cin>>x1>>y1>>r1>>x2>>y2;
	point a;
	a.setpoint(x2,y2);
	cir b;
	b.set(x1,y1,r1);
	cout<<fixed<<setprecision(2)<<b.setarea()<<" "<<b.setlen()<<endl;
	if(b.con(a)) cout<<"yes"<<endl;
	else  cout<<"no"<<endl;


	return 0;
}

四、题解思路

原来getx(),gety()是类自身的函数可以访问其private的数据,如果没有在外面的类里面是没有权限的,所以这两个函数是为了return x与y的。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。