#include <iostream>
#include <cmath>
using namespace std;
class Line
{
public:
Line(int a, int b, int c) :a(a), b(b), c(c)
{
}
Line()
{
this->a = 0;
this->b = 0;
this->c = 0;
}
void set(int a,int b,int c)
{
this->a = a;
this->b = b;
this->c = c;
}
void display()
{
cout << this->a << "x" << "+" << this->b << "y" << "+" << this->c << "=0" << endl;
}
friend void get_Point(Line& line1, Line& line2);
private:
int a;
int b;
int c;
};
void get_Point(Line& line1, Line& line2)
{
int x;
int y;
if ((line1.a * line2.b == line1.b * line2.a) && (line1.a * line2.c == line2.a * line1.c))
{
throw 10;
}
if ((line1.a * line2.b == line1.b * line2.a) && (line1.a * line2.c != line2.a * line1.c))
{
throw 'a';
}
x = (line1.b * line2.c - line2.b * line1.c) / (line2.b * line1.a - line1.b * line2.a);
y = (line1.a * line2.c - line2.a * line1.c) / (line2.a * line1.b - line1.a * line2.b);
if (abs(x)>= pow(10, 8) && abs(y) >= pow(10, 8))
{
throw "hello";
}
cout << "交点坐标" << "(" << x << "," << y << ")" << endl;
}
int main()
{
Line line1;
line1.set(1, 2, 3);
line1.display();
Line line2(2, 4, 6);
line2.display();
try
{
get_Point(line1,line2);
}
catch (int)
{
cout << "两直线重合" << endl;
}
catch (char)
{
cout << "两直线平行" << endl;
}
catch (const char*)
{
cout << "x,y绝对值大于10的8次方" << endl;
}
return 0;
}
运行结果