基于坐标的形状设计(C++)

本文档展示了一个C++程序,实现了基于坐标点的形状设计,包括Point类、Circle类和Triangle类。Point类表示点,Circle类表示圆,具备判断点是否在圆内的功能,Triangle类表示三角形并能计算周长。程序包含了合法性检查,确保给定的点能构成三角形。此外,还提供了用户交互界面供选择操作。
摘要由CSDN通过智能技术生成


前言

面向对象面向君,不负代码不负卿


一、项目需求是?

B02. 基于坐标的形状设计
题目描述:以点为基础,组建不同形状。
功能要求:
(1) 创建一个 Point 类,表示平面上的一个点,有两个数据成员,分别表示
点的横、纵坐标
(2) 创建一个 Circle 类,表示平面上的一个圆,包含一个 Point 类的成员,
表示圆心,另外,还有一个数据成员表示半径,Circle 类包含一个判断给定点
是在圆内,圆外,还是圆上的函数成员。
(3) 创建一个 Triangle 类,表示平面上的一个三角形,包含三个 Point 类
的成员,表示三角形的三边,Triangle 类包含一个计算周长的函数成员。
(4) 要注意进行合法性检查,例如,并不是任意三点都可以构成三角形,在
对三角形进行初始化时要考虑指定的点能不能构成三角形。
(5) 思考:如果要求构建一个抽象类,怎么设计?

二、源代码

废话不多说,完整代码如下:

#include <iostream>
#include <cmath>
#include<conio.h>
using namespace std;
void menu();
void circle();
void triangle();

class Point {

		int x,y;
	public:
		Point(int xx=0,int yy=0) {
			x=xx;
			y=yy;
		}

		int getX() {
			return x;
		}
		int getY() {
			return y;
		}

};

class Circle {
		int radius;
		Point p1;
	public:
		Circle(Point p,int r) {
			p1=p;
			radius=r;
		}
		void judge(int x,int y);

};


void Circle::judge(int x,int y) {
	cout<<"圆心坐标为("<<p1.getX()<<","<<p1.getY()<<")"<<endl;
	cout<<"圆半径为"<<radius<<endl;
	cout<<"给定坐标为("<<x<<","<<y<<")"<<endl;
	double a = pow(y-p1.getY(),2)+pow(x-p1.getX(),2);
	if(a>radius*radius) {
		cout<<"判断结果为:给定点是在圆外"<<endl;
	}
	if(a<radius*radius) {
		cout<<"判断结果为:给定点是在圆内"<<endl;
	}
	if(a==radius*radius) {
		cout<<"判断结果为:给定点是在圆上"<<endl;
	}
}

class Triangle {
		Point p1;
		Point p2;
		Point p3;
	public:
		Triangle(Point pp1,Point pp2,Point pp3) {
			p1=pp1;
			p2=pp2;
			p3=pp3;	
		}
		void girth();

};


void Triangle::girth() {
	cout<<"三角形点A坐标为("<<p1.getX()<<","<<p1.getY()<<")"<<endl;
	cout<<"三角形点B坐标为("<<p2.getX()<<","<<p2.getY()<<")"<<endl;
	cout<<"三角形点C坐标为("<<p3.getX()<<","<<p3.getY()<<")"<<endl;
	float a=pow(pow(p2.getY()-p1.getY(),2)+pow(p2.getX()-p1.getX(),2),0.5);
	float b=pow(pow(p3.getY()-p1.getY(),2)+pow(p3.getX()-p1.getX(),2),0.5);
	float c=pow(pow(p3.getY()-p2.getY(),2)+pow(p3.getX()-p2.getX(),2),0.5);
	if(a+b<=c||a+c<=b||b+c<=a) {
		cout<<"计算结果:给定三点不能构成三角形"<<endl;
	} else {
		cout<<"计算结果:三角形的周长为"<<a+b+c<<endl;
	}
}



int main() {	
	menu();
	int in;
	cin>>in;
	while(in!=0) {
		switch(in) {
			case 1:
				circle();
				break;
			case 2:
				triangle();
				break;
			default:
				break;
		}
		cout<<"输入任意键将返回主菜单\n";
		getch();
		system("cls");
		menu();
		cin>>in;

	}
	return 0;
}


void menu() {
	cout << "********欢迎使用基于坐标的形状设计程序********" << endl;
	cout << "**********************************************" << endl;
	cout << "********      1、判断给定点在圆哪     ********" << endl;
	cout << "********      2、计算三角形的周长     ********" << endl;
	cout << "********      0、退出程序             ********" << endl;
	cout << "**********************************************" << endl;
	cout << "----->  请选择操作项并输入操作项编号:  <-----" << endl;
}


void circle() {
	int x,y,r;

	cout<<"请定义圆心(x,y)和半径r"<<endl;
	cin>>x>>y>>r;
	Point p1(x,y); //定义圆心
	Circle c1(p1,r); //定义圆半径

	cout<<"请输入给定点(x,y)"<<endl;
	cin>>x>>y;

	c1.judge(x,y);//给定点
	cout<<endl;
}


void triangle() {
	int x,y;

	cout<<"请输入点A的坐标(x,y)"<<endl;
	cin>>x>>y;
	Point pp1(x,y); //定义三角形点A

	cout<<"请输入点B的坐标(x,y)"<<endl;
	cin>>x>>y;
	Point pp2(x,y); //定义三角形点B

	cout<<"请输入点C的坐标(x,y)"<<endl;
	cin>>x>>y;
	Point pp3(x,y); //定义三角形点C

	Triangle t(pp1,pp2,pp3);
	t.girth(); //求给定三角形的周长
}

总结

以上代码复制粘贴即可使用,代码写的很烂,有需要的请自行更改,如果可以的话,请一键三连,谢谢.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值