急!c++ 题目 从屏幕输入两直线的端点判断是否相交,如果相交则给出交点。将结果打印到屏幕上。

来源:百度知道 编辑:UC知道 时间:2024/07/07 06:08:43
附上代码呀

急!!!!!!!!c++ 题目 从屏幕输入两直线的端点判断是否相交,如果相交则给出交点。将结果打印到屏幕上。

请高手指点 谢谢
呵呵
昨天早上捉摸着 就想出来了 还是要感谢大家 呵呵

我的代码是

分别输入两条直线的两个点判断是否相交,相交就求出交点。
#include "iostream.h"
void main()
{ int x0,y0,x1,y1,x2,y2,x3,y3,x4,y4 ,k1,k2;
cout<<"input 两条线的端点:";
cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
k1=(y1-y2)/(x1-x2);
k2=(y3-y4)/(x3-x4);
if(k1==k2)
{
cout<<"两直线平行"<<endl;
}
else
{
cout<<"两直线相交"<<endl;
cout<<"两直线的交点是:"<<endl;
x0=(y3-y1+k1*x1-k2*x3)/(k1-k2);
y0=k1*((y3-y1+k1*x1-k2*x3)/(k1-k2)-x1)+y1;
cout<<"("<<x0<<","<<y0<<")"<<endl;
}

}

都不完整而且忽略了斜率无穷大的情况
1L的真是太强大了,鄙人真是无地自容啊
LZ的描述本身就错误:直线无端点,我就按直线上的两点来处理
#include <iostream>
using namespace std;
//平面直线交点获取
double x0 = 3,y0=0,x1 = 3 ,y1=3, x2 = 3, y2 = 0, x3 = 0, y3 = 3,
x,y;//记录交点

bool Inter(){
bool lim1 = false,lim2 = false;//是否垂直X轴
double k1,b1,k2,b2;//斜率和Y轴截距

//特殊情况标记
if(x1 != x0) k1 = (y1-y0)/(x1-x0),b1 = y0 - k1*x0;
else lim1 = true;
if(x3 != x2) k2 = (y3-y2)/(x3-x2),b2 = y2 - k2*x2;
else lim2 = true;

if(!lim1 && !lim2){//都不垂直于X轴
if(k1 == k2)return false;
x = (b2-b1)/(k1-k2);
y = k1 * x + b1;
return true;
}else if(lim1 && lim2){//2直线全垂直X轴
return false;
}else if(lim1 &&!lim2){
x = b2;
y = k2 * x + b2;
return true;
}else if(!lim1 &&lim2){
x = b1;
y = k1 * x + b1;
return true;
}
return false;
}
int main() {
if(Inter()) cout<<"