哪里有问题,求解答
#include
#include
int main()
{
int Vf=20,Vb=17,T=1;
double Yf[100],Xf[100],D[100],Yb[100],Xb[100];
Yf[0]=50,Xf[0]=0,D[0]=15,Xb[0]=80,Yb[0]=0;
for(int t=0;t<12;t++)
{
Xf[t+1]=Xf[t]+Vf*((Yb[t]-Yf[t])*1.0/D[t]);
Yf[t+1]=Yf[t]+Vf*((Xb[t]-Xf[t]*1.0)/D[t]);
D[t]=sqrt((Yb[t]-Yf[t])*(Yb[t]-Yf[t])+(Xb[t]-Xf[t])*(Xb[t]-Xf[t]));
printf("%lf\n",D[t]);
if(D[t]<=10)
printf("%d,%lf",t,D[t]);
else
{
if(t>12)
printf("打印目标脱离");
else
T=T+1;
}
}
}
在计算状态的位置时,需要先根据已知的状态计算出距离,然后再根据速度和时间计算下一次位置。
#include <stdio.h>
#include <math.h>
int main() {
int Vf = 20, Vb = 17, T = 0;
double Yf[100], Xf[100], D[100], Yb[100], Xb[100];
// 初始化车辆状态
Yf[0] = 50, Xf[0] = 0;
D[0] = sqrt((Yb[0] - Yf[0]) * (Yb[0] - Yf[0]) + (Xb[0] - Xf[0]) * (Xb[0] - Xf[0]));
Yb[0] = 0, Xb[0] = 80;
// 循环计算
for (int t = 1; t <= 12; t++) {
D[t] = sqrt((Yb[t-1] - Yf[t-1]) * (Yb[t-1] - Yf[t-1]) + (Xb[t-1] - Xf[t-1]) * (Xb[t-1] - Xf[t-1]));
Xf[t] = Xf[t-1] + Vf * ((Yb[t-1] - Yf[t-1]) / D[t-1]);
Yf[t] = Yf[t-1] + Vf * ((Xb[t-1] - Xf[t-1]) / D[t-1]);
Xb[t] = Xb[t-1] + Vb;
Yb[t] = Yb[t-1];
printf("%d, %lf\n", t, D[t]);
if (D[t] <= 10) {
printf("%d, %lf\n", t, D[t]);
break;
} else {
if (t == 12) {
printf("打印目标脱离\n");
break;
} else {
T++;
}
}
}
printf("T=%d", T);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: