|
[原创]请教vfbpgyfk先生一个编程问题
今天用下面的程序得到了1/3的数据,它没有对第二条记录及第三条记录进行处理,只对第一条记录值19进行了处理,不知是何种原因造成的。
CLEAR
SELECT 1
USE f:\MYVFP\学习VFP\生成初始值11.DBF ALIAS 生成初始值10
SELECT 2
USE f:\MYVFP\学习VFP\生成初始值7.DBF ALIAS 生成初始值6
*INPUT "请输入外循环开始值 wxhks=" TO wxhks
*INPUT "请输入外循环结束值 wjs=" TO wjs
*INPUT "请输入内循环开始值 nks=" TO nks
*INPUT "请输入内循环结束值 njs=" TO njs
*INPUT "请输入参考素数 ckss=" TO ckss
*INPUT "请输入被判断值 bpz=" TO bpz &&被判断值是计算得到,不是输入的。
FOR h=0 to 10
SELECT 生成初始值6 &&打开的是“生成初始值7”
*FOR j=生成元7 to 生成元7 &&这里什么意思?从下面的语句来分析,应该是想从开始值表中取开始值
*如果是,应该写作:
FOR j=1 TO 3
*先把字段名定主为“初始值”,您按照“生成初始值6”表中的字段名替代“初始值”
* bpz=j+h*210 &&发作如下:
bpz=初始值+h*210
qmz=MOD(bpz,11)
IF qmz=0 OR qmz=2 OR qmz=6 OR qmz=8
exit
ENDIF
SKIP
ENDFOR
IF j>3
*else &&不能放在内循环的判断中。
SELECT 生成初始值10 &&打开保存求解结果的信息表
APPEND BLANK &&增加一条空记录
REPLACE 生成元11 WITH bpz &&将符合条件的值bpz保存到生成元11字段中去(生成初始值11.)
ENDIF
* skip
NEXT &&我认为用ENDFOR好。这样好读程序。即FOR开始,ENDFOR结束。
NEXT
从这以后已经不是程序啦,没有必要写“&&”。在这个程序中,没有对字段生成元7中的第二条记录和第三条记录进行处理,只处理了第一条记录,这是为何?
运行结果在生成初始值11的表中生成元11的字段下新增了7条记录,都是预期已知的(即那11个被判断值中,一定有4个被筛除掉,留下7个符合条件的)。
我的问题是:如何才能把第二条记录也同样处理一次(还有第三条,指生成元7的3条记录)
229
439
859
1279
1489
1699
2119
这是运行结果。
***************
依照您的程序思路,综合程序如下:
*****************************************以下是程序
CLEAR
SELECT 1
USE f:\MYVFP\学习VFP\生成初始值11.DBF ALIAS 生成初始值11 &&最好统一,便于读
SELECT 2
USE f:\MYVFP\学习VFP\生成初始值7.DBF ALIAS 生成初始值7 &&同上
INPUT "请输入外循环开始值 wxhks=" TO wxhks &&有这个设置,就要用上,详见程序。(输入值为1)
INPUT "请输入外循环结束值 wjs=" TO wjs &&同上(输入值为3)
INPUT "请输入内循环开始值 nks=" TO nks &&同上(输入值0)
INPUT "请输入内循环结束值 njs=" TO njs &&同上(输入值10)
*INPUT "请输入参考素数 ckss=" TO ckss &&本程序没有用
*INPUT "请输入被判断值 bpz=" TO bpz &&被判断值是计算得到,不是输入的。
FOR h=wxhks to wjs &&这样做免去频繁打开表
SELECT 生成初始值7 &&到底是打开“生成初始值6”表,不是“生成初始值6”表,落实6或7后,改为相应数。如果此程序,应该是“生成初始值7”
FOR j=nks TO njs &&内循环是0~10
qmz=MOD(初始值+h*210,11) &&直接计算,并求模(余)
IF qmz=0 OR qmz=2 OR qmz=6 OR qmz=8
exit
ENDIF
SKIP
ENDFOR
IF j>3
SELECT 生成初始值11 &&打开保存求解结果的信息表(本程序应该是11)
APPEND BLANK &&增加一条空记录
REPLACE 生成元11 WITH bpz &&将符合条件的值bpz保存到生成元11字段中去(生成初始值11.)
ENDIF
ENDFOR
************************************************以上是程序
注意:
1、需将qmz=MOD(初始值+h*210,11)中的“初始值”改为“生成初始值7”表中的字段名。这个很关键,就是您不能调用表中信息的根本原因。
2、落实“生成初始值7”中的数字,是6还是7,还有“生成初始值11” 中的数字,是10还是11
3、外循环是1到3;内循环是0到10。
|
|