前言
面向对象面向君,不负代码不负卿
一、项目需求是?
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(); //求给定三角形的周长
}
总结
以上代码复制粘贴即可使用,代码写的很烂,有需要的请自行更改,如果可以的话,请一键三连,谢谢.