
小妹问最后一道了~~谢谢各位大侠...
设计一个平面直线类line,采用友元函数判断两条直线是平行还是相交,并采用友元函数计算两直线在相交时的交点坐标。再编写一个主函数进行测试.这个用手算都写了半天才明白是咋回...
设计一个平面直线类line,采用友元函数判断两条直线是平行还是相交,并采用友元函数计算两直线在相交时的交点坐标。再编写一个主函数进行测试.
这个用手算都写了半天才明白是咋回事...真是笨死了...那个...大家能帮下忙吗?~~o(∩_∩)o...c++还能有这种功能吗?真晕死了~~编好之后麻烦走一下,如果正确的话还有额外的加分呀~~~(*^__^*) 嘻嘻……谢谢诶 展开
这个用手算都写了半天才明白是咋回事...真是笨死了...那个...大家能帮下忙吗?~~o(∩_∩)o...c++还能有这种功能吗?真晕死了~~编好之后麻烦走一下,如果正确的话还有额外的加分呀~~~(*^__^*) 嘻嘻……谢谢诶 展开
4个回答
展开全部
晚上闲着没事,写了一个,可能还有很多地方不妥,比如友元函数的一些问题。
基本上题目的要求是完成了,如果有哪里看不懂的话,可以发邮件给我。
#include<iostream>
using namespace std;
typedef struct
{
double Frist_x;
double Frist_y;
double Second_x;
double Second_y;
}Line;
class line
{
public:
Line LINE;
line()
{
LINE.Frist_x=0;
LINE.Frist_y=0;
LINE.Second_y=0;
LINE.Second_x=0;
}
~line() {};
void static input(Line &,Line &);
friend bool PX_or_XJ(Line &,Line &);
friend void JiaoDian(Line &,Line &);
};
bool PX_or_XJ(Line &L1,Line &L2)
{
double k1,k2;
k1=(L1.Second_y-L1.Frist_y)/(L1.Second_x-L1.Frist_x);
k2=(L2.Second_y-L2.Frist_y)/(L2.Second_x-L2.Frist_x);
if(k1==k2)
{
cout<<"两直线平行!"<<endl;
return true;
}
else
{
cout<<"两直线相交!"<<endl;
return false;
}
}
void JiaoDian(Line &L1,Line &L2)
{
if (!PX_or_XJ(L1,L2))
{
double k1,k2,b1,b2,JiaoDian_x,JiaoDian_y;
k1=(L1.Second_y-L1.Frist_y)/(L1.Second_x-L1.Frist_x);
k2=(L2.Second_y-L2.Frist_y)/(L2.Second_x-L2.Frist_x);
b1=L1.Frist_y-k1*L1.Frist_x;
b2=L2.Frist_y-k1*L2.Frist_x;
JiaoDian_x=(b1-b2)/(k2-k1);
JiaoDian_y=k1*JiaoDian_x+b1;
cout<<"两直线的交点为:"<<"("<<JiaoDian_x<<","<<JiaoDian_y<<")"<<endl;
}
else
cout<<"两直线无交点!"<<endl;
}
void line::input(Line &L1,Line &L2)
{
cout<<"请输入第一条直线的坐标:"<<endl;
cout<<"( x1, y1 )为:";
cin>>L1.Frist_x>>L1.Frist_y;
cout<<"\n( x2, y2 )为:";
cin>>L1.Second_x>>L1.Second_y;
cout<<"请输入第二条直线的坐标:";
cout<<"\n( x1, y1 )为:";
cin>>L2.Frist_x>>L2.Frist_y;
cout<<"\n( x2, y2 )为:";
cin>>L2.Second_x>>L2.Second_y;
}
int main()
{
line a,b;
line::input(a.LINE,b.LINE);
PX_or_XJ(a.LINE,b.LINE);
JiaoDian(a.LINE,b.LINE);
return 0;
}
基本上题目的要求是完成了,如果有哪里看不懂的话,可以发邮件给我。
#include<iostream>
using namespace std;
typedef struct
{
double Frist_x;
double Frist_y;
double Second_x;
double Second_y;
}Line;
class line
{
public:
Line LINE;
line()
{
LINE.Frist_x=0;
LINE.Frist_y=0;
LINE.Second_y=0;
LINE.Second_x=0;
}
~line() {};
void static input(Line &,Line &);
friend bool PX_or_XJ(Line &,Line &);
friend void JiaoDian(Line &,Line &);
};
bool PX_or_XJ(Line &L1,Line &L2)
{
double k1,k2;
k1=(L1.Second_y-L1.Frist_y)/(L1.Second_x-L1.Frist_x);
k2=(L2.Second_y-L2.Frist_y)/(L2.Second_x-L2.Frist_x);
if(k1==k2)
{
cout<<"两直线平行!"<<endl;
return true;
}
else
{
cout<<"两直线相交!"<<endl;
return false;
}
}
void JiaoDian(Line &L1,Line &L2)
{
if (!PX_or_XJ(L1,L2))
{
double k1,k2,b1,b2,JiaoDian_x,JiaoDian_y;
k1=(L1.Second_y-L1.Frist_y)/(L1.Second_x-L1.Frist_x);
k2=(L2.Second_y-L2.Frist_y)/(L2.Second_x-L2.Frist_x);
b1=L1.Frist_y-k1*L1.Frist_x;
b2=L2.Frist_y-k1*L2.Frist_x;
JiaoDian_x=(b1-b2)/(k2-k1);
JiaoDian_y=k1*JiaoDian_x+b1;
cout<<"两直线的交点为:"<<"("<<JiaoDian_x<<","<<JiaoDian_y<<")"<<endl;
}
else
cout<<"两直线无交点!"<<endl;
}
void line::input(Line &L1,Line &L2)
{
cout<<"请输入第一条直线的坐标:"<<endl;
cout<<"( x1, y1 )为:";
cin>>L1.Frist_x>>L1.Frist_y;
cout<<"\n( x2, y2 )为:";
cin>>L1.Second_x>>L1.Second_y;
cout<<"请输入第二条直线的坐标:";
cout<<"\n( x1, y1 )为:";
cin>>L2.Frist_x>>L2.Frist_y;
cout<<"\n( x2, y2 )为:";
cin>>L2.Second_x>>L2.Second_y;
}
int main()
{
line a,b;
line::input(a.LINE,b.LINE);
PX_or_XJ(a.LINE,b.LINE);
JiaoDian(a.LINE,b.LINE);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
都快忘记直线方程了,还有就是,你明明是男的,亏你能自称小妹。呵呵。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肉麻死了!什么小妹?明明多长了一个东西,还小“妹”呢!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你们两个认识她?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询