代码
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
//数学公式kz=ya-yb ,km=xa-xb ,k=k1/k2 bz=xayb-xbya bm=xa-xb b=bz/bm;
int xa,ya,xb,yb;
double k,b;
int kz,km,bz,bm,kyf,byf;
int Rof(int m,int n)//找最大公约数用来约分的函数 约分:reduction of a fraction
{
while(m!=n)
{
if(m>n)
m=m-n;
else
n=n-m;
}
return m;
}
int main()
{
cin>>xa>>ya>>xb>>yb;
kz=ya-yb;
km=xa-xb;
k=kz*1.0/km;
bz=xa*yb-xb*ya;
bm=xa-xb;
b=bz*1.0/bm;
int kzz=abs(kz),kmm=abs(km),bzz=abs(bz),bmm=abs(bm);
if(k==0)
{
cout<<"y="<<ya;
return 0;
}
else
{
if(b==0)
{
if(kz%km==0)
{
if(k==1)
cout<<"y=x";
else if(k==-1)
cout<<"y=-x";
else
cout<<"y="<<k<<"x";
}
else
{
kyf=Rof(kzz,kmm);
kzz=kz/kyf;
kmm=km/kyf;
if(k>0)
kzz=kzz;
else
kzz=-kzz;
cout<<"y="<<kzz<<"/"<<kmm;
}
}
else
{
if(kz%km==0)
{
if(b>0)
{
if(k==1)
cout<<"y=x+"<<b;
else if(k==-1)
cout<<"y=-x+"<<b;
else
cout<<"y="<<k<<"x+"<<b;
}
else
{
if(k==1)
cout<<"y=x"<<b;
if(k==-1)
cout<<"y=-x"<<b;
else
cout<<"y="<<k<<"x"<<b;
}
}
else
{
kyf=Rof(kzz,kmm);
kzz=kzz/kyf;
kmm=kmm/kyf;
if(k>0)
kzz=kzz;
else
kzz=-kzz;
if(bz%bm==0)
{
if(b>0)
cout<<"y="<<kzz<<"/"<<kmm<<"*x+"<<b;
else
cout<<"y="<<kzz<<"/"<<kmm<<"*x"<<b;
}
else
{
byf=Rof(bzz,bmm);
bzz=bzz/byf;
bmm=bmm/byf;
if(b>0)
cout<<"y="<<kzz<<"/"<<kmm<<"*x+"<<bzz<<"/"<<bmm;
else
cout<<"y="<<kzz<<"/"<<kmm<<"*x-"<<bzz<<"/"<<bmm;
}
}
}
}
return 0;
}