哪里有问题,求解答,急

哪里有问题,求解答

img

img

img

img


Xb是轰炸机的x坐标,Yb是轰炸机的y坐标

#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;
}
}
}

img

在计算状态的位置时,需要先根据已知的状态计算出距离,然后再根据速度和时间计算下一次位置。

#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;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^