主题:帮帮忙啊,明天要交作业啊
typedef int datatype;
typedef struct{
datatype *base;
int index[3];
int c[3];
}array;
int initarray(array *A,int b1,int b2,int b3)
{int elements;
if(b1<=0||b2<=0||b3<=0) return(0);
A->index[0]=b1;A->index[1]=b2;A->index[2]=b3;
elements=b1*b2*b3;
A->base=(datatype*)malloc(elements*sizeof(datatype));
if(!(A->base)) return(0);
A->c[0]=b2*b3;A->c[1]=b3;A->c[2]=1;
return(1);
}
int value(array A,int i1,int i2,int i3, datatype *x)
{int off;
if(i1<0||i1>=A.index[0]||i2<0||i2>=A.index[1]||i3>=A.index[2])
return(0);
off=i1*A.c[0]+i2*A.c[1]+i3*A.c[3];
*x=*(A.base+off);
return(*x);
}
main()
{array a;
int i,j,k,y,m,x;
initarray(&a,2,3,2);
for(i=0;i<2;i++)
for(j=0;j<3;j++)
for(k=0;k<2;k++)
{scanf("%d",&y);
assign(&a,y,i,j,k);}
for(i=0;i<2;i++)
for(j=0;j<3;j++)
for(k=0;k<2;k++)
m=value(a,i,j,k,x);
printf("a[%d][%d][%d]",i,j,k,m);
getch();
}
帮我看看哪里错了,怎么这个三元数组打印不了,
typedef struct{
datatype *base;
int index[3];
int c[3];
}array;
int initarray(array *A,int b1,int b2,int b3)
{int elements;
if(b1<=0||b2<=0||b3<=0) return(0);
A->index[0]=b1;A->index[1]=b2;A->index[2]=b3;
elements=b1*b2*b3;
A->base=(datatype*)malloc(elements*sizeof(datatype));
if(!(A->base)) return(0);
A->c[0]=b2*b3;A->c[1]=b3;A->c[2]=1;
return(1);
}
int value(array A,int i1,int i2,int i3, datatype *x)
{int off;
if(i1<0||i1>=A.index[0]||i2<0||i2>=A.index[1]||i3>=A.index[2])
return(0);
off=i1*A.c[0]+i2*A.c[1]+i3*A.c[3];
*x=*(A.base+off);
return(*x);
}
main()
{array a;
int i,j,k,y,m,x;
initarray(&a,2,3,2);
for(i=0;i<2;i++)
for(j=0;j<3;j++)
for(k=0;k<2;k++)
{scanf("%d",&y);
assign(&a,y,i,j,k);}
for(i=0;i<2;i++)
for(j=0;j<3;j++)
for(k=0;k<2;k++)
m=value(a,i,j,k,x);
printf("a[%d][%d][%d]",i,j,k,m);
getch();
}
帮我看看哪里错了,怎么这个三元数组打印不了,