正交表程序说明书.docVIP

  • 20
  • 0
  • 约8.53千字
  • 约 10页
  • 2017-06-10 发布于江西
  • 举报
正交表程序说明书

正交表程序设计说明书 指导老师:-- 班级:-- 姓名:-- 学号:-- 正交表主程序流程图 否 是 #includestdio.h #includemath.h #include stdlib.h void main() { int d,n,p,c; void fun1(); 函数声明 void fun2(); void fun3(); void fun4(); void fun5(); void fun6(); printf(本程序包含7个无交互作用的常见正交表\n请输入实验水平数和向量维数中间用空格隔开\n); scanf(%d,p); scanf(%d,n); d=int (pow (p,n)); 求p的n次幂,即实验组数 c=(d-1)/(p-1); 求独立向量个数,即正交表列数 switch(d) 以实验组数为变量,用swith语句判断,调用对应的子函数,输出对应实验组数的正交表 {case 9 : fun1();break; case 8 : fun2();break; case 4 : fun3();break; case 16: fun4();break; case 27: fun5();break; case 25: fun6();break; default : printf(此程序不包含这个正交表\n); } system(PAUSE); } 子程序以输出L9(3^4),L16(2^4),L16(4^2)正交表为例,其他子程序除了寻找独立向量部分程序段略有不同,变量定义,赋值,循环,正交表数组生成原理都一样 void fun5() {int h[9][2]={0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2},a[4][2], b[9][4],i,j,k=0; 定义生成正交表的所需的数组和变量 bool flag[9]; 定义一个有标记作用的数组 for (i=0;i9;i++) for循环输出所有向量域里的二维向量 printf(%d\t(%d,%d)\n,i,h[i][0],h[i][1]); for (i=0;i9;++i) 用for循环一步一步找出不是独立向量的向量,并使flag[i]=0; { if((h[i][0]==0) (h[i][1]==0)) { flag[i]=0; }else if(h[i][0]==0) { for(j=0;j9;++j) { if(flag[j] j!=i (h[j][0]==0) (h[j][1]h[i][1]) (h[j][1]%h[i][1]==0)) { flag[j]=0; } } }else if(h[i][1]==0) { for(j=0;j9;++j) { if(flag[j] j!=i (h[j][1]==0) (h[j][0]h[i][0]) (h[j][0]%h[i][0]==0)) { flag[j]=0; } } }else if(h[i][0]==1) { for(j=0;j9;++j) { if(flag[j] j!=i (h[j][0]h[i][0]) (h[j][0]*h[i][0]==h[j][1]*h[i][1])) { flag[j]=0; } } }else { for(j=0;j9;++j) {

文档评论(0)

1亿VIP精品文档

相关文档