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

本文介绍了类和对象的概念,类是对象的抽象,对象是类的实例。通过点、线、三角形和平行四边形的类,实现计算距离、判断关系、面积周长等功能。详细阐述了各个类的属性和方法,并提供了源码实例和运行截图。
摘要由CSDN通过智能技术生成

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<<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值