帮忙看段小程序(找出哪里错了)
//2.1 设计并测试点类Point,其数据成员是直角坐标系的点坐标,友元函数distance用来计算两点间的距离。
#include<iostream>
#include<math.h>
using namespace std;
class point
{
private:double x1,y1,x2,y2;
public:point(double a,double b,double c,double d)
{x1=a;y1=b;x2=c;y2=d;}
friend void tance(point &);
};
void tance(point & p)
{cout<<"第一个点为:"<<p.x1<<" "<<p.y1<<" "<<"第二个点为:"<<p.x2<<" "<<p.y2<<endl;
if(p.x1>p.x2)
if(p.y1>p.y2)
cout<<"两点之间的距离为:"<<sprt((p.x1-p.x2)(p.x1-p.x2)+(p.y1-p.y2)(p.y1-p.y2))<<endl;
else cout<<"两点之间的距离为:"<<sprt((p.x1-p.x2)(p.x1-p.x2)+(p.y2-p.y1)(p.y2-p.y1))<<endl;
if(p.x1<=p.x2)
if(p.y1>p.y2)
cout<<"两点之间的距离为:"<<sprt((p.x2-p.x1)(p.x2-p.x1)+(p.y1-p.y2)(p.y1-p.y2))<<endl;
else cout<<"两点之间的距离为:"<<sprt((p.x1-p.x2)(p.x1-p.x2)+(p.y2-p.y1)(p.y2-p.y1))<<endl;
int main()
{
point p1(1,2,9,8);
p1.tance();
}
[解决办法]
这有两个错误,第一,函数名写错,二,(p.x1-p.x2)(p.x1-p.x2) 中间少了个*号
sprt((p.x1-p.x2)(p.x1-p.x2)+(p.y1-p.y2)(p.y1-p.y2))
改正
sqrt((p.x1-p.x2) * (p.x1-p.x2)+(p.y1-p.y2)*(p.y1-p.y2))
[解决办法]
#include<iostream>
#include<math.h>
using namespace std;
class point
{
private:
double x1,y1,x2,y2;
public:
point(double a,double b,double c,double d)
{
x1=a;
y1=b;
x2=c;
y2=d;
}
friend void tance(point &);
};
void tance(point & p)
{
cout<<"第一个点为:"<<p.x1<<" "<<p.y1<<" "<<"第二个点为:"<<p.x2<<" "<<p.y2<<endl;
if(p.x1>p.x2)
{
if(p.y1>p.y2)
{
cout<<"两点之间的距离为:"<<sqrt((p.x1-p.x2)*(p.x1-p.x2)+(p.y1-p.y2)*(p.y1-p.y2))<<endl;
}
else cout<<"两点之间的距离为:"<<sqrt((p.x1-p.x2)*(p.x1-p.x2)+(p.y2-p.y1)*(p.y2-p.y1))<<endl;
}
else
{
if(p.y1>p.y2)
{
cout<<"两点之间的距离为:"<<sqrt((p.x2-p.x1)*(p.x2-p.x1)+(p.y1-p.y2)*(p.y1-p.y2))<<endl;
}
else cout<<"两点之间的距离为:"<<sqrt((p.x1-p.x2)*(p.x1-p.x2)+(p.y2-p.y1)*(p.y2-p.y1))<<endl;
}
}
int main()
{
point p1(1,2,9,8);
tance(p1);
return 0;
}
[解决办法]
給你個參考
#include<iostream>
#include<math.h>
using namespace std;
class point
{
private:double x,y;
public:point(double a,double b):x(a),y(b){}
double distance(point &);
friend double distane2(point&, point&);
};
double point::distance(point & p)
{
double dis = sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
cout<<"第一个点为:"<<x<<" "<<y<<" "<<"第二个点为:"<<p.x<<" "<<p.y<<endl;
cout<<"两点之间的距离为:"<<dis<<endl;
return dis;
}
double distane2(point& p1, point& p2)
{
double dis = sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
cout<<"第一个点为:"<<p1.x<<" "<<p.y<<" "<<"第二个点为:"<<p2.x<<" "<<p2.y<<endl;
cout<<"两点之间的距离为:"<<dis<<endl;
return dis;
}
int main()
{
point p1(1,2);
point p2(9,8);
p1.distance(p2);
distane2(p1,p2);
return 0;
}
[解决办法]
cout<<"两点之间的距离为:"<<sprt((p.x1-p.x2)(p.x1-p.x2)+(p.y1-p.y2)(p.y1-p.y2))<<endl;
else cout<<"两点之间的距离为:"<<sprt((p.x1-p.x2)(p.x1-p.x2)+(p.y2-p.y1)(p.y2-p.y1))<<endl;
if(p.x1<=p.x2)
if(p.y1>p.y2)
cout<<"两点之间的距离为:"<<sprt((p.x2-p.x1)(p.x2-p.x1)+(p.y1-p.y2)(p.y1-p.y2))<<endl;
else cout<<"两点之间的距离为:"<<sprt((p.x1-p.x2)(p.x1-p.x2)+(p.y2-p.y1)(p.y2-p.y1))<<endl;
输出的时候两个()()之间要用乘号来进行连接啊。这个是小问题。
