问题遇到的现象和发生背景
无限循环 最终结果在最外层从0到144无限循环
问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <math.h>
int main()
{
double v[108];//网格二维数组储存慢度
double v1[108];//初始化
double A3[144][108];//存放时间
double A_1[144][108];
double k[12][12];//斜向直线斜率
double b[12][12];//斜向直线截距
double r_1[144];//残差
double k2[144];
double b2[144];//将斜率和截距的二维数组转换为一维数组
double x[108];//确定x横坐标值
double y[144][108];//确定每一点对应的y值
double pd[12];//存放炮点
double jsd[12];//存放接收点
double sum_1[144];//计算每条曲线的时间
double b_1[144];//计算每条曲线的时间---自定义初始值
double sum_2[144];//计算每条曲线的长度平方和
double delta_x[144]={0.0};/////修正值
int i, j;
int m, n;
int m1=0;////计算迭代次数
int a;//设置选择的炮点
int a1;//设置相应的接收点
FILE *f1 = fopen("慢度数组.txt", "w");
FILE *f2 = fopen("y坐标.txt", "w");
FILE *f3 = fopen("每条曲线时间.txt", "w");
FILE *f4 = fopen("每个方格的距离.txt", "w");
//////存放慢度
for(i=0;i<108;i++)
{
v[i]=3.0;
}
for(i=0;i<108;i++)
{
v1[i]=0.1;
}
v[20]=v[29]=5.0;
v[43]=v[52]=4.0;
v[77]=v[78]=2.0;
v[82]=v[91]=6.0;//速度赋值
for (i = 0; i < 12; i++)
{
for (j = 0; j < 9; j++)
{
fprintf(f1, "%lf\t", v[12*i+9]);
}
fprintf(f1, "%\n");
}
printf("请选择炮点:1 2 3 4\n");
scanf("%d", &a);
printf("请选择接受点:1 2 3 4\n");
scanf("%d", &a1);
if (a1 == 1)
{
printf("please input the right one!");
}
if (a == 1 && a1 == 3)
{
/////////求出横向激发每条曲线方程
printf("请输入迭代次数:");
scanf("%d",&m1);
for (i = 0; i < 12; i++)
{ //确定炮点与检波点的坐标
pd[i] = 2 * i * 10 + 10;
jsd[i] = 2 * i * 10 + 10;
}
for (i = 0; i < 12; i++)
{
for (j = 0; j < 12; j++)
{
k[i][j] = (jsd[j] - jsd[i]) / 108; //存储的从头开始每个炮点对应的12个接收点的斜率
// printf("k[%d][%d]=%lf\n",i,j,k[i][j]);
}
}
//////确定横向曲线截距
for (i = 0; i < 12; i++)
{
for (j = 0; j < 12; j++)
{
b[i][j] = pd[i];
}
}
for (i = 0; i < 12; i++)
{ /////将二维数组斜率以及截距存入一维数组中
for (j = 0; j < 12; j++)
{
b2[12 * i + j] = b[i][j];
k2[12 * i + j] = k[i][j];
//printf("%lf\t%lf\n",b2[12*i+j],k2[12*i+j]);
}
}
////计算每条线x、y的坐标
for (i = 0; i < 144; i++)
{
for (j = 0; j < 108; j++)
{
x[j] = j;
y[i][j] = k2[i] * x[j] + b2[i];
fprintf(f2,"y[%d][%d]=%lf\n", i, j, y[i][j]);
}
fprintf(f2,"\n");
}
/////////////////////////ART///////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////分格处理//////////////////
double X[9];//定义方格中心点
double Y[12];
double d_1[144][108];
double x_1[144][108];
double y_1[144][108];/////定义交点
double x_2[144][108];
double y_2[144][108];
FILE *rp=fopen("距离.txt","w");
for(j=0;j<12;j++)
{
Y[j]=20*j+10;
//printf("%lf\n",Y[j]);
}
for(i=0;i<9;i++)
{
X[i]=12*i+6;
//printf("%lf\n",X[i]);
}
for(m=0;m<144;m++)
{
for(i=0;i<12;i++)
{
for(j=0;j<9;j++)
{
if(Y[i]>(20*i)&&(Y[i]<(20*(i+1)))&&(X[j]>(12*j))&&(X[j]<(12*(j+1))))
{
if((12*j-1<0))
{
y_1[m][12*i+j]=y[m][12*i+j];
x_1[m][12*i+j]=(y_1[m][12*i+j]-b2[m])/k2[m];
printf("%d\t%lf\n",i,y_1[m][12*i+j]);
}
if(12*i-1<0)
{
x_1[m][12*i+j]=x[0];
y_1[m][12*i+j]=k2[m]*x_1[m][12*i+j]+b2[m];
}
if(int(y[m][12*j-1])%20==0)
{
y_1[m][12*i+j]=y[m][12*j-1];
x_1[m][12*i+j]=(y_1[m][12*i+j]-b2[m])/k2[m];
//printf("%lf\t%lf\n",x_1[m][12*i+j],y_1[m][12*i+j]);
}
else if(int(y[m][12*j-1])%20!=0)
{
y_1[m][12*i+j]=0;
x_1[m][12*i+j]=0;
}
if(int(y[m][12*(j+1)-1])%20==0)
{
y_2[m][12*i+j]=y[m][12*(j+1)-1];
x_2[m][12*i+j]=(y_2[i][12*i+j]-b2[m])/k2[m];
}
else if(int(y[m][12*(j+1)-1])%20!=0)
{
y_2[m][12*i+j]=0;
x_2[m][12*i+j]=0;
}
if(int(x[12*i-1])%12==0)
{
x_1[m][12*i+j]=x[(12*i-1)];
y_1[m][12*i+j]=k2[m]*x_1[m][12*i+j]+b2[m];
}
else if(int(x[12*i-1])%12!=0)
{
y_1[m][12*i+j]=0;
x_1[m][12*i+j]=0;
}
if(int(x[12*(i+1)-1])%12==0)
{
x_2[m][12*i+j]=x[12*(i+1)];
y_2[m][12*i+j]=k2[m]*x_2[m][12*i+j]+b2[m];
}
else if(int(x[12*(i+1)-1])%12!=0)
{
y_2[m][12*i+j]=0;
x_2[m][12*i+j]=0;
}
d_1[m][12*i+j]=sqrt(pow((x_1[m][12*i+j]-x_2[m][12*i+j]),2)+pow(y_2[m][12*i+j]-y_1[m][12*i+j],2));
//printf("d[%d][%d]=%lf\n",m,12*i+j,d_1[m][12*i+j]);
}
}
}
}
for(m=0;m<144;i++)
{
for(i=0;i<12;j++)
{
for(j=0;j<9;j++)
{
fprintf(rp,"%lf",d_1[m][12*i+j]);
}
fprintf(rp,"\n");
}
fprintf(rp,"%d\n",m);
}
}
return 0;
}
运行结果及报错内容
无报错