正文

例题:奇数阶的幻方阵2006-06-28 14:56:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/mingjing/16239.html

分享到:

   如果整数方阵的每行各数之和、每列各数之各以及两个对角线上各数之和全都相等,则称之为幻方阵。此时,每行(每列或对角线)各数之和1/2 n(n2+1),称之为方阵常数。由自然数1~n2构成的n(n为>=3的奇数)阶幻方阵是最简单的一种。   幻方阵有以下规律:   1、数1放在第一行的正中一列   2、从数2起每数所在的行数比前一数所在的行数减1,所在的列数比前一数所在的列数加1。若行数超出下界(即I=0),则改为上界(令I=N),若列数超出上界(即J=N+1),则改为下界(令J=1)。若某数为N的倍数,则其后之数所在的位置为列数不变,行数加1。   首先在表单的Load事件代码中定义全局变量n用来存放所选择的幻方阵的阶数,定义全局变量数组Lab[1,1]用来存放显示幻方阵各个元素的标签组。   public lab(1,1),n   在表单的destroy事件代码中释放全局变量及数组:   lab=0   release lab,n在表单的Activate事件代码中调用“布阵”按扭的click事件代码:thisform.command1.click容器container1的init事件代码:n=thisform.spinner1.valuedd=230/ndd=int(dd+.5)dime lab[n,n]for i =1 to n*n    k=allt(str(i))    this.addobject('label&k','label')    lab[i]=this.label&kendforfor i=1 to n    for j=1 to n      with lab[i,j]         .left=dd*(j-1)+2         .top=dd*(i-1)+2         .height=dd         .width=dd         .visible=.t.         .caption=""         .backcolor=rgb(255,255,255)         .forecolor=rgb(0,0,255)         .alignment=2         .borderstyle=1         .fontsize=dd*.6       endwith      endfor   endfor   this.height=dd*n+4   this.width=dd*n+4   编写“布阵”按钮command1的click事件代码:dime a(n,n)store 0 to ai=1j=(n+1)/2a(i,j)=1lab[j,j].caption=allt(str(1))for x=2 to n*n  if a(i,j)%n=0    i=i+1  else    i=iif(i=1,n,i-1)    j=iif(j=n,1,j+1)  endif  a(i,j)=x   lab[i,j].caption=allt(str(x))endfor   编写spinner1的interactive事件代码:for i= 1 to n*n  a1=allt(str(i))  thisform.container1.removeobject('label&a1')endforn=this.valuethisform.container1.init编写“退出”按钮的command2的click的事件代码:thisform.release  

阅读(3461) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册