求c++源程序|问题:声明一个点类和直线类,编写一程序,求一点到直线的距离。

2024年12月05日 14:33
有1个网友回答
网友(1):

第一题:
已知点(X,Y)到直线ax+by+y=0的计算公式为:
d=|(ax+by+c)/sqrt(a^2+b^2)|

测试可以用:Point(1,2), Line(2, 3, 4)

#include
#include
using namespace std;

class Line;//声明类Line,因为Point类中声明友元函数friend dist(Point P,Line L)用到该类

class Point
{
private:
double x;
double y;
public:
Point(double xx=0,double yy=0)
{
x=xx;
y=xx;
}
friend double dist(Point P,Line L);
};

class Line
{
private:
double a;
double b;
double c;
public:
Line(double aa=1,double bb=1,double cc=1)
{
a=aa;
b=bb;
c=cc;
}
friend double dist(Point P,Line L);
};

double dist(Point P,Line L)
{
double s;
s=(L.a*P.x+L.b*P.y+L.c)/sqrt(L.a*L.a+L.b*L.b);
if(s>0)
return s;
else
return -s;
}

int main()
{
Point P;//这相当于 Point P(0,0);
Line L;//相当于 Line L(1,1,1);
cout<
return 0;
}

第二题:
#include
using namespace std;

long f1(int n)
{
long sum = 1;
for(int i = 1; i <= n; i++)
sum *=n;
return sum;
}

long f2(int n)
{
long sum = 0;
for(int i = 1; i <= n; i++)
sum += f1(i);
return sum;
}

void main()
{
int n;
cout << "输入n的值:";
cin >> n;
cout << f2(n) << endl;
}