这段C++程序的错误在那里?

来源:百度知道 编辑:UC知道 时间:2024/06/07 12:34:24
#include<iostream.h>
#include<math.h>
#define DT 5
#define s0 5

class missile;

class airplane
{
float va;
float xa;
public:
airplane(float vaa=0,float xaa=0)
{va=vaa;xa=xaa;}
void nexta();
friend float missile::nextm(airplane &);
};
void airplane::nexta()
{
xa+=va*DT;
}
class missile
{
float vm;
float xm,ym;
public:
missile(float vmm=0,float xmm=0,float ymm=0)
{vm=vmm;xm=xmm;ym=ymm;}
float nextm(airplane &a);
};
float missile::nextm(airplane &a)
{
float s=sqrt(ym*ym+(xm*xm-xa*xa));
xm-=vm*DT*(xm-xa)/s;
ym-=vm*DT*ym/s;
return s;
}

void main()
{
missile m(10000,100000,4000);
airplane a(500,0);
int step=0;
while(m.nextm(a,s)>s0)
{
step++;
a.nexta();
}
cout<<step<<endl;
}

好象编译器并没有把n

这个程序做什么我没有仔细看,我只帮你把错误改了
你设计类的友元函数时 不需要加类域的

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include<iostream.h>
#include<math.h>
#define DT 5
#define s0 5

class missile;
class airplane
{
float va;
float xa;
public:
airplane(float vaa=0,float xaa=0)
{va=vaa;xa=xaa;}
void nexta();
friend float nextm(airplane &a);
};
void airplane::nexta()
{
xa+=va*DT;
}

class missile
{
float vm;
float xa;
float xm,ym;
public:
missile(float vmm=0,float xmm=0,float ymm=0)
{vm=vmm;xm=xmm;ym=ymm;}
float nextm(airplane &a);
};

float missile::nextm(airplane &a)
{
float s=sqrt(ym*ym+(xm*xm-xa*xa));
xm-=vm*DT*(xm-xa)/s