一题C++,设计一个直线类Line.设计一个直线类Line,其中包含3个数据成员,用于描述直线方程的3 个系数,并声明一个友元函数,用于计算两条直线的交点,和显示函数,编程测试. 提示:两
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/20 11:26:50
![一题C++,设计一个直线类Line.设计一个直线类Line,其中包含3个数据成员,用于描述直线方程的3 个系数,并声明一个友元函数,用于计算两条直线的交点,和显示函数,编程测试. 提示:两](/uploads/image/z/13035968-8-8.jpg?t=%E4%B8%80%E9%A2%98C%2B%2B%2C%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E7%9B%B4%E7%BA%BF%E7%B1%BBLine.%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E7%9B%B4%E7%BA%BF%E7%B1%BBLine%2C%E5%85%B6%E4%B8%AD%E5%8C%85%E5%90%AB3%E4%B8%AA%E6%95%B0%E6%8D%AE%E6%88%90%E5%91%98%2C%E7%94%A8%E4%BA%8E%E6%8F%8F%E8%BF%B0%E7%9B%B4%E7%BA%BF%E6%96%B9%E7%A8%8B%E7%9A%843+++++++%E4%B8%AA%E7%B3%BB%E6%95%B0%2C%E5%B9%B6%E5%A3%B0%E6%98%8E%E4%B8%80%E4%B8%AA%E5%8F%8B%E5%85%83%E5%87%BD%E6%95%B0%2C%E7%94%A8%E4%BA%8E%E8%AE%A1%E7%AE%97%E4%B8%A4%E6%9D%A1%E7%9B%B4%E7%BA%BF%E7%9A%84%E4%BA%A4%E7%82%B9%2C%E5%92%8C%E6%98%BE%E7%A4%BA%E5%87%BD%E6%95%B0%2C%E7%BC%96%E7%A8%8B%E6%B5%8B%E8%AF%95.+++++++++%E6%8F%90%E7%A4%BA%EF%BC%9A%E4%B8%A4)
一题C++,设计一个直线类Line.设计一个直线类Line,其中包含3个数据成员,用于描述直线方程的3 个系数,并声明一个友元函数,用于计算两条直线的交点,和显示函数,编程测试. 提示:两
一题C++,设计一个直线类Line.
设计一个直线类Line,其中包含3个数据成员,用于描述直线方程的3 个系数,并声明一个友元函数,用于计算两条直线的交点,和显示函数,编程测试.
提示:两条直线:a1x+b1y+c1=0和a2x+b2y+c2=0的交点坐标为:
(b1c2-b2c1)/(a1b2-a2b1),(c1a2-c2a1)/(a1b2-a2b1)
为显示交点,还要设计一个描述点的类.
请尽量详细注释一下,高分悬赏,谢谢,
一题C++,设计一个直线类Line.设计一个直线类Line,其中包含3个数据成员,用于描述直线方程的3 个系数,并声明一个友元函数,用于计算两条直线的交点,和显示函数,编程测试. 提示:两
/*
设计一个直线类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;
}
这个是主要的源代码了,没有分开文件写,能完成你需要的功能.