c++数组程序编译连接都没问题运行不了

来源:百度知道 编辑:UC知道 时间:2024/06/19 02:43:47
下面试小弟的程序,编译连接都没问题就是运行不了,请赐教,贼感谢!
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double x=0.333,m=26.667,k=400;
int i,j;
double t[50][14],h[14];
t[0][0]=0;h[0]=h[1]=0;

for(i=0;i<50;i++)
{
if (i==0) {for(j=1;j<15;j++) t[i][j]=1100;}
else
{
if (j==0) t[i][j]=0;
else
{
for (j=1;j<15;j++)
{t[i][j]=x/m*t[i-1][j-1]+t[i][j+1]/m+(1-(x+1)/m)*t[i-1][j];
if (t[i][j]<1000) {h[j]=1000-t[i][j]+h[j];if(h[j]<k) t[i][j]=1000;}}
}

}

}
for(i=0;i<50;i++)
{for(j=0;j<15;j++)
cout<<setiosflags(ios::fixed)<<setprecision(3)<<t[i][j]<<' ';}
cout<<endl;
return 0;
}
i为所求,j为15个元素,T[i][j]=T[i-1][j-1]+T[i][j+1]+T[i-1][j],当T[i][j]小于1000时令T[i][j]=1000,把T[i][j]和1000之间的差值记下来和记为h[j],当

t[i][j]=x/m*t[i-1][j-1]+t[i][j+1]/m+(1-(x+1)/m)*t[i-1][j];
if (t[i][j]<1000) {h[j]=1000-t[i][j]+h[j];if(h[j]<k) t[i][j]=1000

越界了

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double x=0.333,m=26.667,k=400;
int i,j;
double t[50][14],h[14]; //t[50][14]的边界是t[49][13]
t[0][0]=0;
h[0]=h[1]=0;
for(i=0;i<50;i++)
{
if(i==0)
{
for(j=1;j<15;j++) //j的值达到了14,所以越界了
t[i][j]=1100;
}
else
{
if(j==0)
t[i][j]=0;
else
{
for (j=1;j<15;j++)
{
t[i][j]=x/m*t[i-1][j-1]+t[i][j+1]/m+(1-(x+1)/m)*t[i-1][j];
if(t[i][j]<1000)
{
h[j]=1000-t[i][j]+h[j];
if(h[j]<k) t[i][j]=1000;
}
}
}
}
}
for(i=0;i<50;i++)
{
for(j=0;j<15;j++)