类和对象总结及用法 计算点到点距离 线与线的关系 计算三角形平行四边形面积周长 判断形状

1.类和对象简介

类和对象的关系:类是对象的抽象,而对象是类的特例,即类的具体表现形式。
类和对象的区别:类是对象的模板,类是抽象的不占用内存,对象是具体的,占用储存空间。
类中主要包括数据和成员函数(通常情况下数据设置为私有,成员函数通常设为共用,因为成员函数通常作为外界的接口)
注意:声明类一定要放在对象之前

2.程序实例

1.程序简介

下面是一个实例
程序功能:
利用点、线、面的基本知识,声明Point,Line,Friangle,PolyAngle四个类,完成以下功能。
Point类功能:
(1) 移动一个点;
(2) 显示一个点;
(3) 可计算这个点到原点的距离。
Line类功能:
(1) 计算点到直线的距离;
(2) 直线的斜率;
(3) 判断两条直线的关系(平行/相交(交点坐标能够给出来并显示)/垂直);
Friangle类功能:
(1) 判断三点能否构成三角形;
(2) 判断三角形是等边,等腰或者是直角;
(3) 计算三角形的面积。
PolyAngle类功能:
(1) 判断四点能否构成四边形,并判断其是凹的,还是凸的;
(2) 判断四边形是否是等腰梯形;
(3) 判断四边形是否是平行四边形,菱形;
(4) 判断它是否是一个矩形;
(5) 计算四边形的面积和周长。

2. 源代码

在这里插入代码片
#include<iostream>
#include<cmath>// 数学计算要用到此头文件 
#include <cstdlib>//暂停和清屏函数要用到此头文件 
using namespace std;
class Point//点类 
{
   
	public:
		Point()//构造函数 
		{
   
			x=0;
			y=0;
		}
		void f1();//输入A点的坐标函数
		void f2();//输入A点移动量的函数
		void f3();//输出点A的坐标函数 
		void f4();//计算A点到原点的距离 
	private:
		double x;
		double y;
};
void Point::f1()//输入A点的坐标函数
{
   
	cout<<"请输入A点的坐标(两个数中间用空格隔开):";
	cin>>x>>y;
}
void Point::f2()//输入A点移动量的函数
{
   
	double x1,y1;//x1和y1表示 A点在x轴和y轴上的增量
	cout<<"请依次输入A点在x轴和y轴上的增量(两个数中间用空格隔开):";
	cin>>x1>>y1;
	x=x+x1;
	y=y+y1; 
}
void Point::f3()//输出A点此时的坐标函数 
{
   
	cout<<"此时A点的坐标为:"<<"("<<x<<","<<y<<")"<<endl;
}
void Point::f4()//计算A点到原点的距离
{
   
	double d;
	d=sqrt((x-0)*(x-0)+(y-0)*(y-0));//计算A点到原点的距离
	cout<<"此时A点到原点的距离为:"<<d<<endl; 
}
class Line//线类 
{
   
	public:
		Line()//构造函数 
		{
   
			ax=bx=cx=dx=ex=0;
			ay=by=cy=dy=ey=0; 
		}
		void f1();// 计算点到直线的距离 
		void f2();// 计算直线的斜率 
		void f3();// 计算两条直线的关系 
	private:
		double ax,bx,cx,dx,ex;
		double ay,by,cy,dy,ey;
		/*定义5个点a点是动点,bc点构成第一条直线,de点构成第二条直线*/
};
void Line::f1()// 计算点到直线的距离
{
   
	double d,d1,d2,k,b;
	cout<<"请输入a点的坐标(两个数中间用空格隔开):";
	cin>>ax>>ay;
	cout<<"开始输入直线(请按照提示操作)"<<endl;
	cout<<"请输入直线上的2个不同的点(例如:1 2 2 0):";
	cin>>bx>>by>>cx>>cy;
	while(bx==cx&&by==cy)//判断输入的两个点是否相同 
	{
   
		cout<<"输入的2个点相同!"<<endl<<"请重新输入:";
		cin>>bx>>by>>cx>>cy; 
	}
	cout<<"输入的b,c两点坐标分别为:"<<"b("<<bx<<","<<by<<"),"<<"c("<<cx<<","<<cy<<")"<<endl;
	if(bx==cx)//直线斜率不存在 
	{
   
		 d=ax-bx;//点a到直线的距离 
		 if(d<0)
		 {
   
		 	d=-d;
		 }
		 if(bx>=0)
		 {
   
		 	cout<<"直线的方程为:x-"<<bx<<"=0";
		 	cout<<"点a"<<"("<<ax<<","<<ay<<")"<<"到直线x-"<<bx<<"=0"<<"的距离为d,d="<<d<<endl; 
		 }
		 else
		 {
   
		 	cout<<"直线的方程为:x+"<<-bx<<"=0";
		 	cout<<"点a"<<"("<<ax<<","<<ay<<")"<<"到直线x+"<<-bx<<"=0"<<"的距离为d,d="<<d<<endl; 
		 }	  
	}
	else//斜率存在 
	{
   
		k=(by-cy)/(bx-cx);
		b=cy-k*cx;
		d1=k*ax+(-1)*ay+b;
		d2=sqrt(k*k+-1*-1);
		if(d1<0)
		{
   
			d=-d1/d2;
		}
		else
		{
   
			d=d1/d2;
		}
		if(b>=0)
		{
   
			cout<<"直线的方程为:"<<k<<"x-y+"<<b<<"=0"<<endl;
			cout<<"点a"<<"("<<ax<<","<<ay<<")"<<"到直线"<<k<<"x-y+"<<b<<"=0的距离为d,d="<<d<<endl;
		}
		else
		{
   
			cout<<"直线的方程为:"<<k<<"x-y"<<b<<"=0"<<endl;
			cout<<"点a"<<"("<<ax<<","<<ay<<")"<<"到直线"<<k<<"x-y"<<b<<"=0的距离为d,d="<<d<<endl;
		}
		
	}
}
void Line::f2()// 计算直线的斜率 
{
   
	double k,b;
	cout<<"开始输入直线的方程(请按照提示操作)"<<endl;
	cout<<"请输入直线上的2个不同的点(例如:1 2 2 0):";
	cin>>bx>>by>>cx>>cy;
	while(bx==cx&&by==cy)//判断输入的两个点是否相同 
	{
   
		cout<<"输入的2个点相同!"<<endl<<"请重新输入:";
		cin>>bx>>by>>cx>>cy; 
	}
	cout<<"输入的b,c两点坐标分别为:"<<"b("<<bx<<","<<by<<"),"<<"c("<<cx<<","<<cy<<")"<<endl;
	if(bx==cx)//直线斜率不存在 
	{
    
		 if(bx>=0)
		 {
   
		 	cout<<"直线的方程为:x-"<<bx<<"=0";
		 	cout<<"直线x-"<<bx<<"=0"<<"的斜率不存在"<<endl; 
		 }
		 else
		 {
   
		 	cout<<"直线的方程为:x+"<<-bx<<"=0";
		 	cout<<"直线x+"<<-bx<<"=0"<<"的斜率不存在"<<endl; 
		 }	  
	}
	else//斜率存在 
	{
   
		k=(by-cy)/(bx-cx);
		b=cy-k*cx;
		if(b>=0)
		{
   
			cout<<"直线的方程为:"<<k<<"x-y+"<<b<<"=0"<<endl;
			cout<<"直线"<<k<<"x-y+"<<b<<"=0的斜率为k,k="<<k<<endl;
		}
		else
		{
   
			cout<<"直线的方程为:"<<k<<"x-y"<<b<<"=0"<<endl;
			cout<<"直线"<<k<<"x-y"<<b<<"=0的斜率为k,k="<<k<<endl;
		}		
	}
}
void Line::f3()// 计算两条直线的关系
{
   
	double k,k1,b,b1,x0,y0;
	cout<<"开始输入第1条直线的方程(请按照提示操作)"<<endl;
	cout<<"请输入直线上的2个不同的点(例如:1 2 2 0):";
	cin>>bx>>by>>cx>>cy;
	while(bx==cx&&by==cy)//判断输入的两个点是否相同 
	{
   
		cout<<"输入的2个点相同!"<<endl<<"请重新输入:";
		cin>>bx>>by>>cx>>cy; 
	}
	cout<<"输入的b,c两点坐标分别为:"<<"b("<<bx<<","<<by<<"),"<<"c("<<cx<<","<<cy<<")"<<endl;
	if(bx==cx)//直线斜率不存在 
	{
    
		 if(bx>=0)
		 {
   
		 	cout<<"第1条直线的方程为:x-"<<bx<<"=0"<<endl;
		 }
		 else
		 {
   
		 	cout<<"第1条直线的方程为:x+"<<-bx<<"=0"<<endl; 
		 }	  
	}
	else//斜率存在 
	{
   
		k=(by-cy)/(bx-cx);
		b=cy-k*cx;
		if(b>=0)
		{
   
			cout<<"第1条直线的方程为:"<<k<<"x-y+"<<b<<"=0"<<endl;
		}
		else
		{
   
			cout<<"第1条直线的方程为:"<<k<<"x-y"<<b<<"=0"<<endl;
		}		
	}
	cout<<"开始输入第2条直线的方程(请按照提示操作)"<<endl;
	cout<<"请输入直线上的2个不同的点(例如:1 2 2 0):";
	cin>>dx>>dy>>ex>>ey;
	while(dx==ex&&dy==ey)//判断输入的两个点是否相同 
	{
   
		cout<<"输入的2个点相同!"<<endl<<"请重新输入:";
		cin>>dx>>dy>>ex>>ey; 
	}
	cout<<"输入的d,e两点坐标分别为:"<<"d("<<dx<<","<<dy<<"),"<<"e("<<ex<<","<<ey<<")"<<endl;
	if(dx==ex)//直线斜率不存在 
	{
    
		 if(dx>=0)
		 {
   
		 	cout<<"第2条直线的方程为:x-"<<dx<<"=0"
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值