| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 819 人关注过本帖
标题:请教求块中对称行之和
只看楼主 加入收藏
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
结帖率:73.44%
收藏
已结贴  问题点数:20 回复次数:12 
请教求块中对称行之和
有11行1列的块(块很多)的原表,现要求每块中对称位置(如第1与第11、第2与第10等[中间行除外])的和并写入新表,代码如下但不成功,请指点,谢谢
clear
clear all
CLOSE ALL
SET SAFETY OFF
CREATE TABLE 新表 (运行记录号 N(10))
    ALTER table 新表 ADD 和2 n(20)
use 原表
select count(*) from 原表 where not empty(运行记录号) into array acnt
for lnI=1 to acnt[1]/11
*-------想求出每块中第1与第11行之和、第2与第10行之和,并将求得的和各写入新表
FOR NC=(LNI-1)*11+1 TO (LNI-1)*11+5
 nsum=0
    go NC   
    scatter to aa fields like 和1
    GO NC+6
    scatter to bb fields like 和1
           nsum=nsum+aa[lnJ]+bb[lnJ]
    endfor
    insert into 新表 values (lnI,nsum)
ENDFOR
select 新表
browse
MESSAGEBOX('求和已结束!',64,'信息提示')
DELETE FILE  *.BAK
QUIT  
   
 
求块中对称位置数之和.zip (193.83 KB)
搜索更多相关主题的帖子: count where 记录 
2015-04-20 20:05
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:684
专家分:1303
注 册:2009-3-1
收藏
得分:0 
如果是12行的,是不是变成
1+12
2+11
……
6+7

请我这样理解对不对?

如果对的话,我觉得处理是简单的,只要按记录数的一关进行循环就好了。

[ 本帖最后由 xs591222 于 2015-4-20 21:08 编辑 ]
2015-04-20 21:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
**    看算法:11条记录一块,每块中除第6行外求和。
**    FOR lnI=1 to acnt[1]/11 && 块数
**        FOR NC=(LNI-1)*11+1 TO (LNI-1)*11+5
**            go NC   
**            GO NC+6
**        ENDFOR
**    ENDFOR

SELECT 原表
GO TOP
DO WHILE !EOF()
    lnI  = 运行记录号
    nsum = 0
    i = 1
    DO WHILE !EOF() AND i < 12
        IF i != 6
            nsum = nsum + 和1
        ENDIF
        SKIP
        i = i + 1
    ENDDO
    insert into 新表 values (lnI,nsum)
ENDDO

[ 本帖最后由 吹水佬 于 2015-4-20 22:14 编辑 ]
2015-04-20 22:12
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:20 
程序代码:
CLEAR
CLEAR ALL
CREATE CURSOR 新表 (运行记录号 N(10),和2 N(16))
SELECT 0
USE 原表
NCNT=RECCOUNT()/11
FOR I=1 TO NCNT
    GO (I-1)*11+1
    COPY TO ARRAY AH NEXT 11 WHILE 运行记录号=I 
    LOCAL AA[5,2]
    STORE I TO AA
    AA[1,2]=AH[1,2]+AH[11,2]
    AA[2,2]=AH[2,2]+AH[10,2]
    AA[3,2]=AH[3,2]+AH[9,2]
    AA[4,2]=AH[4,2]+AH[8,2]
    AA[5,2]=AH[5,2]+AH[7,2]
    INSERT INTO 新表 FROM ARRAY AA
ENDFOR
SELECT 新表
BROWSE
RETURN

坚守VFP最后的阵地
2015-04-20 23:48
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
楼上的应该是对的,我的理解有问题,看清楚楼主的代码:
insert into 新表 values (lnI,nsum)
这句的位置应该放在块循环体内。
2015-04-21 07:11
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
COPY TO ARRAY AH NEXT 11 WHILE 运行记录号=I
WHILE 运行记录号=I 可以省略,直接
COPY TO ARRAY AH NEXT 11

坚守VFP最后的阵地
2015-04-21 09:25
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
数独研究中,算法是至关重要的,代码只是实现结果的辅助手段。

坚守VFP最后的阵地
2015-04-21 09:30
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 7楼 sdta
先生您好,我是50年代末的一位数学老师,平时没什么爱好,只喜欢摆弄数字,尤其是数独,所以近段时间老是麻烦您,谢谢了啊
2015-04-23 08:16
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
没事,我也喜欢学习,以后相互交流,先生今年高龄?80?

坚守VFP最后的阵地
2015-04-23 08:29
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
以下是引用fdxxhjc在2015-4-23 08:16:35的发言:

先生您好,我是50年代末的一位数学老师,平时没什么爱好,只喜欢摆弄数字,尤其是数独,所以近段时间老是麻烦您,谢谢了啊

难得!
“不忘初心,方得始终”......《华严经》
2015-04-23 10:39
快速回复:请教求块中对称行之和
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038739 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved