java 同时和或者_有会用java写"生成正交表"代码的吗? 或者同时会C语言和java语言的牛人在吗?...

手里有一套用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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值