易语言采用循环算法求N阶幻方

程序集变量

.版本 2
 
.程序集 启动窗口程序集
.程序集变量 幻方阶数, 整数型
.程序集变量 幻方数组, 整数型, , "0"
.程序集变量 结果字符串, 文本型

求幻方

.版本 2
 
.子程序 求幻方
.局部变量 甲标, 整数型
.局部变量 乙标, 整数型
.局部变量 试数甲, 整数型
.局部变量 试数乙, 整数型
.局部变量 变子, 整数型
.局部变量 逻辑, 逻辑型
 
重定义数组 (幻方数组,, 幻方阶数 + 1, 幻方阶数 + 1)
.变量循环首 (1, 幻方阶数, 1, 甲标)
    .变量循环首 (1, 幻方阶数, 1, 乙标)
        ' 幻方数组清零
        幻方数组 [甲标] [乙标] = 0
    .变量循环尾 ()
.变量循环尾 ()
甲标 = 0
乙标 = 幻方阶数 ÷ 2
变子 = 1
幻方数组 [甲标 + 1] [乙标 + 1] = 变子
变子 = 变子 + 1
.判断循环首 (变子 ≤ 幻方阶数 × 幻方阶数)
    试数甲 = 甲标 - 1
    试数乙 = 乙标 - 1
    .如果真 (试数甲 = -1)
        ' 从新生成试数甲
        试数甲 = 试数甲 + 幻方阶数
    .如果真结束
 
    .如果真 (试数乙 = -1)
        ' 从新生成试数乙
        试数乙 = 试数乙 + 幻方阶数
    .如果真结束
 
    逻辑 = 试数甲 = -1 且 试数乙 = -1
    .如果 (幻方数组 [试数甲 + 1] [试数乙 + 1] ≠ 0 或 逻辑)
        ' 自增1
        甲标 = 甲标 + 1
    .否则
        甲标 = 试数甲
        乙标 = 试数乙
    .如果结束
 
    幻方数组 [甲标 + 1] [乙标 + 1] = 变子
    变子 = 变子 + 1
.判断循环尾 ()
 
.变量循环首 (0, 幻方阶数 - 1, 1, 甲标)
    .变量循环首 (0, 幻方阶数 - 1, 1, 乙标)
        结果字符串 = 结果字符串 + 到文本 (幻方数组 [甲标 + 1] [乙标 + 1]) + “ , ”
    .变量循环尾 ()
    结果字符串 = 结果字符串 + #换行符
.变量循环尾 ()

执行按钮

界面两个编辑框,一个输入幻方阶数,一个用来多行显示。

.版本 2
 
.子程序 _计算图形按钮_被单击
 
幻方阶数 = 到数值 (阶数编辑框.内容)
结果字符串 = “”  ' 清空
结果编辑框.内容 = “”  ' 清空
.如果 (幻方阶数 ≤ 0 或 幻方阶数 > 50)
    信息框 (“输入错误!”, 0, )
.否则
    求幻方 ()
    结果编辑框.内容 = 结果字符串
.如果结束

发布日期:

所属分类: 易语言 标签: