一题C++,设计一个直线类Line.
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/23 20:38:25
一题C++,设计一个直线类Line.
设计一个直线类Line,其中包含3个数据成员,用于描述直线方程的3 个系数,并声明一个友元函数,用于计算两条直线的交点,和显示函数,编程测试.
提示:两条直线:a1x+b1y+c1=0和a2x+b2y+c2=0的交点坐标为:
(b1c2-b2c1)/(a1b2-a2b1),(c1a2-c2a1)/(a1b2-a2b1)
为显示交点,还要设计一个描述点的类.
请尽量详细注释一下,高分悬赏,谢谢,
设计一个直线类Line,其中包含3个数据成员,用于描述直线方程的3 个系数,并声明一个友元函数,用于计算两条直线的交点,和显示函数,编程测试.
提示:两条直线:a1x+b1y+c1=0和a2x+b2y+c2=0的交点坐标为:
(b1c2-b2c1)/(a1b2-a2b1),(c1a2-c2a1)/(a1b2-a2b1)
为显示交点,还要设计一个描述点的类.
请尽量详细注释一下,高分悬赏,谢谢,
/*
设计一个直线类Line,其中包含3个数据成员,用于描述直线方程的3 个系数,
并声明一个友元函数,用于计算两条直线的交点,和显示函数,编程测试.
提示:两条直线:a1x+b1y+c1=0和a2x+b2y+c2=0的交点坐标为:
(b1c2-b2c1)/(a1b2-a2b1),(c1a2-c2a1)/(a1b2-a2b1)
为显示交点,还要设计一个描述点的类.
请尽量详细注释一下,
*/
#include
#include
#include
class CPoint //这是焦点的类
{
public:
double x,y; //用公有的数据x,y表示焦点
};
class CLine //直线类
{
private:
double a,b,c; //用私有的数据abc表示他的三个系数.
public:
CLine():a(0),b(0),c(0) //构造函数
{
}
CLine(double a1,double b1,double c1)//有参数的构造函数
{
a = a1; //用参数来初始化直线的系数
b = b1;
c = c1;
}
CLine(){}
public:
friend bool IntersectToLines(const CLine& cLine1,const CLine& cLine2,
CPoint* pcPt);//友员函数,用来计算焦点,友员函数能访问私有变量
};
bool IntersectToLines(const CLine& cLine1,const CLine& cLine2,CPoint* pcPt)
{//计算两条直线的焦点
double temp = cLine1.b*cLine2.a - cLine1.a*cLine2.b; //得到分母
if (fabs(temp) < 0.0000001) //判断分母是否为0,分母不能为0
{
return false; //如果为0,这每焦点,量直线平行
}
if(pcPt) //计算并保存焦点
{
pcPt->x = (cLine1.b*cLine2.c - cLine1.c*cLine2.b) / temp;
pcPt->y = (cLine1.a*cLine2.c - cLine1.c*cLine2.a) / temp;
}
return true;
}
int main()
{
double a,b ,c;
while(1) //这些都是测试.
{
printf("Please input the Line parameters(a b c):\n(0 0 0 is end the Apllication):\n");
scanf("%lf%lf%lf",&a,&b,&c);
if(a == 0 && b == 0 && c == 0 )
{
break;
}
CLine cLine1(a,b,c);
printf("Please input the second line's pamaters:\n");
scanf("%lf%lf%lf",&a,&b,&c);
CLine cLine2(a,b,c);
CPoint cPt;
if(IntersectToLines(cLine1,cLine2,&cPt) == true)
{
printf("The two Lines's intersect point is:%lf,%lf\n",cPt.x,cPt.y);
}
else
{
printf("The two Lines is not intersect\n");
}
}
return 0;
}
这个是主要的源代码了,没有分开文件写,能完成你需要的功能.
设计一个直线类Line,其中包含3个数据成员,用于描述直线方程的3 个系数,
并声明一个友元函数,用于计算两条直线的交点,和显示函数,编程测试.
提示:两条直线:a1x+b1y+c1=0和a2x+b2y+c2=0的交点坐标为:
(b1c2-b2c1)/(a1b2-a2b1),(c1a2-c2a1)/(a1b2-a2b1)
为显示交点,还要设计一个描述点的类.
请尽量详细注释一下,
*/
#include
#include
#include
class CPoint //这是焦点的类
{
public:
double x,y; //用公有的数据x,y表示焦点
};
class CLine //直线类
{
private:
double a,b,c; //用私有的数据abc表示他的三个系数.
public:
CLine():a(0),b(0),c(0) //构造函数
{
}
CLine(double a1,double b1,double c1)//有参数的构造函数
{
a = a1; //用参数来初始化直线的系数
b = b1;
c = c1;
}
CLine(){}
public:
friend bool IntersectToLines(const CLine& cLine1,const CLine& cLine2,
CPoint* pcPt);//友员函数,用来计算焦点,友员函数能访问私有变量
};
bool IntersectToLines(const CLine& cLine1,const CLine& cLine2,CPoint* pcPt)
{//计算两条直线的焦点
double temp = cLine1.b*cLine2.a - cLine1.a*cLine2.b; //得到分母
if (fabs(temp) < 0.0000001) //判断分母是否为0,分母不能为0
{
return false; //如果为0,这每焦点,量直线平行
}
if(pcPt) //计算并保存焦点
{
pcPt->x = (cLine1.b*cLine2.c - cLine1.c*cLine2.b) / temp;
pcPt->y = (cLine1.a*cLine2.c - cLine1.c*cLine2.a) / temp;
}
return true;
}
int main()
{
double a,b ,c;
while(1) //这些都是测试.
{
printf("Please input the Line parameters(a b c):\n(0 0 0 is end the Apllication):\n");
scanf("%lf%lf%lf",&a,&b,&c);
if(a == 0 && b == 0 && c == 0 )
{
break;
}
CLine cLine1(a,b,c);
printf("Please input the second line's pamaters:\n");
scanf("%lf%lf%lf",&a,&b,&c);
CLine cLine2(a,b,c);
CPoint cPt;
if(IntersectToLines(cLine1,cLine2,&cPt) == true)
{
printf("The two Lines's intersect point is:%lf,%lf\n",cPt.x,cPt.y);
}
else
{
printf("The two Lines is not intersect\n");
}
}
return 0;
}
这个是主要的源代码了,没有分开文件写,能完成你需要的功能.
一题C++,设计一个直线类Line.
怎么用C 语言设计一个类Line,用于表示二维坐标系中任意一条直线并输出该直线的属
设计一个程序,其中有2个类,Point类为点类,包含2个私有数据x和y,表示点的坐标,line类为直线类,包含3个私有数
C语言设计一个数学类计算的程序
5.定义一个表示点的结构类型Point和一个由直线方程 确定的直线类Line.结构类型Point由x和y两个成员,他
初3的几何证明一题(wait on line)
信号波形合成实验电路(C题) 一、任务 设计制作一个电路,能够产生多个不同频率的正弦信号,并将这些信号
编写一个VB循环程序用line方法或line控件对象在屏幕上随机产生20条长度、颜色、宽度各异的直线段
求文档:《4.2直线、射线、线段(一)》教学设计
帮忙设计一个C语言算法
设计一个C语言程序解决这道题.
C语言设计的一个题目