手里有一套用c语言写的生成正交表的代码.无奈小生才疏学浅,只会一点java,请教哪位高手帮忙改写成java语言好吗?
#include
#include
#define N 30
int p;
main()
{int a[N][N/3],b[N][N/3],c[N][N/3],i,m,n,j,k,r,flag[N/5],J,v[N/5],x[N/5],fla[N/5];
double P,K,M;
float d[N/3][N/3],e[N],f,*fl;
FILE *fp;
int range(int);
printf("please input the number of experiment,level and cloumn" );
scanf("%lf%lf",&K,&P);
scanf("%d",&J);
k=K;
p=P;
M=log(K);
K=log(P);
M=M/K;
m=M;
for(i=0;i
{n=i;
for(j=0;j
{K=pow(P,M-1-j);
r=K;
a[i][j]=n/r;
c[i][j]=a[i][j];
n=n-a[i][j]*r;
}
}
for(i=0;i
{
for(j=0;j
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
for(i=k-1;i>0;i--)
{for(n=1;n
{flag[1]=0;
for(j=0;j
b[i][j]=range(n*c[i][j]);
for(r=i-1;r>0;r--)
{flag[0]=0;
for(j=0;j
{if(b[i][j]==c[r][j])
flag[0]++;
else
break;
}
if(flag[0]==m)
{for(j=0;j
c[i][j]=0;
flag[1]=1;
break;
}
}
if(flag[1]) break;
}
}
n=0,i=0;
while(n
{flag[0]=0;
for(;i
{for(j=0;j
if(c[i][j]==0) flag[0]++;
if(flag[0]!=m)
{for(j=0;j
b[n][j]=c[i][j];
break;
}
}
n++;
i++;
}
for(i=0;i
{ for(j=0;j
printf("%d ",b[i][j]);
printf("\n");
}
printf("\n");
for(i=0;i
for(n=0;n
{c[i][n]=0;
for(j=0;j
c[i][n]=c[i][n]+a[i][j]*b[n][j];
c[i][n]=1+range(c[i][n]);
}
for(i=0;i
{ for(j=0;j
printf("%d ",c[i][j]);
printf("\n");
}
printf("please input the cloumn stand for the factor\n ");
for(i=0;i
scanf("%d",&x[i]);
printf("please input the result of experiment \n ");
for(i=0;i
scanf("%f",&e[i]);
f=e[0];
for(i=1;i
f=f+e[i];
f=f/k;
for(i=0;i
{ e[i]=e[i]-f;
printf("%f\n",e[i]);
}
for(i=0;i
{if(x[i]) v[i]=p-1;
else {v[i]=k-1-(p-1)*(J-1);
n=i;
}
}
for(j=0;j
for(r=1;r<=p;r++)
{d[r-1][j]=0;
for(i=0;i
if(c[i][j]==r)
d[r-1][j]=d[r-1][j]+e[i];
}
r=k/p;
for(i=p;i<2*p;i++)
for(j=0;j
d[i][j]=d[i-p][j]*d[i-p][j]/r;
i=2*p;
for(j=0;j
{d[i][j]=0;
for(r=p;r<2*p;r++)
d[i][j]=d[i][j]+d[r][j];
}
for(i=0;i<=2*p;i++)
{ for(j=0;j
printf("%10f ",d[i][j]);
printf("\n");
}
for(i=0;i
flag[i]=1;
loop:j=0;
while(j<4)
{ for(i=0;i
{ if(i==n || flag[i]==0) continue;
f=d[r][i]*v[n]/(d[r][n]*v[i]);
fp=fopen("bina","rb");
for(m=0;m<15*j+3*(v[n]-1)+v[i];m++)
fread(fl,sizeof(float),1,fp);
fclose(fp);
printf("%f\n",*fl);
if(f-*fl<=0)
{ fla[i]=j;
flag[i]=0;
if(j==0)
{v[n]=v[n]+v[i];
d[r][n]=d[r][n]+d[r][i];
goto loop;
}
}
}
j++;
}
for(i=0;i
if(flag[i]!=0 && i!=n)
fla[i]=4;
for(i=0;i
if(i!=n) printf("%d\n",fla[i]);
for(i=0;i
if(i!=n)
{printf("%d factor ",x[i]);
switch(fla[i])
{ case 0: printf("is no influnce factor\n"); break;
case 1: printf("is normal factor\n"); break;
case 2: printf("is normal factor\n"); break;
case 3: printf("is important factor\n"); break;
case 4: printf("is very important factor\n");break;
}
}
}
int range(int i)
{if(i
return i;
else
i=range(i-p);
return i;
}
void bsnhk(float a)
{ float *p;
p=&a;
}