数组越界的问题
#include <stdio.h>
#include <math.h>
#define d 6 //多项式维数
#define D d+1
#define M 5
#define N 8
int main( )
{
int i,j;
float a,b,c;
float p[d][d] = {0};//全部初始化为0
p[0][0]=1; p[1][0]=0; p[1][1]=1;
for (int n=0; n<d; n++)
{
for (int k=0;k<d;k++)
{
/*
if (n<k)
{ p[n][k]=0;
}
*/
//else
//{
if (k<1)
a=0;
else
a=p[n][k-1];
if (n<1)
b=0;
else
b=p[n-1][k];
c= a*(2*n+1)/(n+1)-b*n/(n+1.0);
if (n+1>d)
break;
else
p[n+1][k]=c;
//}
p[0][0]=1; p[1][0]=0; p[1][1]=1;
}
}
float sum[D][D]={0};
float res[d][d]={0};
float rest[M][N]={0};
int z=1;
for (int m1=0; m1<=d; m1++){
for (int n1=0; n1<=d-m1-1; n1++){
for (int m2=0; m2<=M-1; m2++){
for (int n2=0; n2<=N-1; n2++){
for (int t1=0; t1<=m1; t1++){
for (int t2=0; t2<=n1; t2++){
sum[m1][n1]+=z*(2*m1+1)*(2*n1+1)*p[m1][t1]*p[n1][t2]*pow((2*m2/M-1),t1)*pow((2*n2/N-1),t2)/(M*N);
}
}
}
}
}
}
for(int k=0;k<=d;k++){
for(int l=0;l<=d-k-1;l++){
for (int m3=0;m3<=d;m3++){
for (int n3=0;n3<=d-m3-1;n3++){
if (m3>=k && n3>=l)
for(int k1=k;k1<=m3;k1++){
for(int l1=l;l1<=n3;l1++){
// float z1=1;
// float z2=1;
// k1大于k
float aa1,aa2,bb1,bb2,cc1,cc2,z1,z2;
//aa1=k;
float res1=1,res2=1,res3=1,res4=1,res5=1,res6=1;
for ( bb1=k1;bb1>=1;bb1--)
{ res1=res1*bb1;
}
for ( aa1=k ;aa1>=1;aa1--)
{ res2=res2*aa1;
}
for ( cc1=k1-k ;cc1>=1;cc1--)
{ res3=res3*cc1;
}
z1=res1/(res2*res3);
// for (l=1;l<=l1;l++)
//
for ( bb2=l1;bb2>=1;bb2--)
{res4=res4* bb2 ;
}
for ( aa2=l ;aa2>=1;aa2--)
{ res5=res5* aa2 ;
}
for ( cc2=l1-l ;cc2>=1;cc2--)
{ res6=res6* cc2 ;
}
z2=res4/(res5*res6);
res[k][l]+=pow(-1, k1+l1-k-l)*pow(2, k+l)*z1*z2*sum[m3][n3]*p[m3][k1]*p[n3][l1];
}
}
else
continue;
}
}
}
}
//float ttt=0;
/*
for (int j4=0;j4<M;j4++ ){
for (int j3=0;j3<N;j3++ ){
// for (float x=0; x<=1;x=x+1/M){
// for (float y=0; y<=1;y=y+1/N){
for (int kk=0;kk<=d;kk++){
for (int ll=0;ll<=d-kk;ll++){
rest[j4][j3]=pow(1/(j4+1),kk)*pow(1/(j3+1),ll)*res[kk][ll]+rest[j4][j3];
}
}
}
}
*/
//}
//}
for (i=0;i<d;i++) //输出矩阵
{
for (j=0;j<d;j++)
{
printf("% 6f ",res[i][j]);
}
printf("\n");
}
/*
for (i=0;i<M;i++) //输出矩阵
{
for (j=0;j<N;j++)
{
printf("% 6f ",rest[i][j]);
}
printf("\n");
}
*/
}
d设置为4时,没有问题,设置为7时就有问题出现?什么原因?
...全文
相关推荐
Java数组越界问题实例解析
Java数组越界问题实例解析在Java中,数组是一种非常重要的数据结构,它广泛应用于各种场景中。然而,在使用数组时,开发者最容易遇到的问题之一就是数组越界问题。
浅析C语言编程中的数组越界问题
在C语言编程中,数组越界是一个常见的错误,由于C语言不进行自动的数组边界检查,程序员必须自行确保数组操作的合法性。数组越界可能导致数据损坏、程序崩溃,甚至安全漏洞。下面我们将深入探讨这个问题。
day05 11 常见问题 数组索引越界异常
day05_11_常见问题_数组索引越界异常
C#中数组索引越界问题的解决
资源下载链接为:https://pan.quark.cn/s/22ca96b7bd39在C#开发中,“索引超出数组界限”是常遇的错误,通常源于访问数组元素时,所用索引超出了数组合法范围。数组索引从0开
Jetty8 之前用6的时候报错数组越界 换成8就好了
以下将详细介绍Jetty的版本差异、数组越界错误的原因以及如何解决此类问题。1.


