数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: 白新岭

[原创]请教vfbpgyfk先生一个编程问题

  [复制链接]
 楼主| 发表于 2010-5-22 12:34 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

下面引用由vfbpgyfk2010/05/22 11:23am 发表的内容:
白新岭:您好!
看了您的叙述,真为您的精神和毅力所感动,别说我打击您的积极性,下面说点我的看法:
1、搞科学研究,不是搞生产,您要那么多四胞胎干什么用?您能算得完吗?您能证明得完吗?……
2、搞科学研 ...
谢谢你的好言相劝,我不一定会找那多的数据,只因为,熊一兵先生中有其他网友编程给他的数据,给他提供的是1600万多,而用我给出的积分公式是830万左右,他说我的数据少了一半,后来在多次交流中,他已承认是他的计算有误,但是这仍然不能说明那1600万是否正确,也无法验证我的积分公式是否正确(前边的系数是用理论推导出来的,不会错)。
不过,也有简便的验证方法,就是我说的不同初始值上的四胞胎数量基本一致(当然不会完全相同,这与自然数对3的余数,0,1,2各占1/3的概率有微小的不同之处,但是相对误差会很小,我们把初始值的数量增加,把步长变大,随机的抽取其中的几个初始值即可,用这几初始值的平均值求大概的数据是完全可行的。
我的邮箱是:ljwbxl@126.com
 楼主| 发表于 2010-5-23 17:24 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

今天我试着编了一个小程序,可是无论如何也不能把存放在“生成初始值7”中的记录调入程序中,从结果看,是用了外循环值n,即n是几就把几付给变量i,而没有把记录值付给变量i.
程序如下:
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 "请输入参与运算的初始值 i=" TO 生成元7
wxhks=1
USE f:\MYVFP\学习VFP\生成初始值7.DBF
?reccount()  
wjs=reccount()
FOR i=wxhks to wjs
nks=0
njs=10
FOR j=nks to njs
  bpz=i+j*210
  ckss=11
  qmz=MOD(bpz,ckss)
   IF .not. qmz=0 OR qmz=2 OR qmz=6 OR qmz=8
     SELECT  生成初始值10               &&打开保存求解结果的信息表
     APPEND BLANK                        &&增加一条空记录
     REPLACE 生成元11 WITH  bpz             &&将外循环数值保存到外循环字段中(外循环数据栏)
    ENDIF
NEXT
NEXT
 楼主| 发表于 2010-5-23 17:27 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

[这个贴子最后由白新岭在 2010/05/23 05:42pm 第 2 次编辑]

外循环用do while 条件
        enddo
能不能调用到“生成初始值7”的记录值。
用 do while .not.eof()
     IF 生成元7<200【生成元7为生成初始值7表中的字段名】
        replace  被判值  with  生成元7+j*210
        loop
     endif

     skip
    enddo
发表于 2010-5-23 22:26 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

CLEAR
SELECT 1
USE f:\MYVFP\学习VFP\生成初始值11.DBF ALIAS 生成初始值10 &&怎么调用表名与打开表名不一致。ALIAS是说,以后启动这个表时的启动名,实质就是“生成初始值11.DBF”
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 "请输入参与运算的初始值 i=" TO 生成元7
wxhks=1
USE f:\MYVFP\学习VFP\生成初始值7.DBF  &&已经在“SELECT 2”处打开过啦。这种打开方式,程序中只能有一个打开表,再用其它表,只有再打开语句,而且是从第一条记录开始。
?reccount()  
wjs=reccount()
FOR i=wxhks to wjs   &&这是对记录进行循环(如同在教室或影剧院中,从第一排走到最后一排),您不点名(叫哪个人),只能得到排序,而不能让哪个人站出来做事。所以,如果需要哪个人出来做事,就要点出几排(循环数),几列(字段名),才能让这个点(那个人)上的人(数据)出来做事(参加计算)。nks=0
njs=10
FOR j=nks to njs
bpz=i+j*210    &&由于在外循环中没有“点将”(记录号或字段名),只能是外循环值,与表中内容无任何关系。如我的程序中“qmz=MOD(bpz,素数)”的“素数”就是调用了素数表的字段名为“素数”(第几列)的数值。比如:第二排(第二条记录,外循环的i=2)和字段名为素数的数值(假如是3,如果i=3,就是5)
ckss=11
qmz=MOD(bpz,ckss)
  IF .not. qmz=0 OR qmz=2 OR qmz=6 OR qmz=8
    SELECT  生成初始值10               &&打开保存求解结果的信息表
    APPEND BLANK                        &&增加一条空记录
    REPLACE 生成元11 WITH  bpz             &&将外循环数值保存到外循环字段中(外循环数据栏)
   ENDIF
NEXT   &&这是什么?在此位置上应该是SKIP(记录指针向下移动一条)或ENDFOR(循环出口,即一个完整的循环圈)
NEXT   &&同上
程序不全,不好分析。
I=1
DO WHILE I<=10
循环间需要做的事语句
I=I+1
ENDDO

FOR I=1 TO 10
循环间需要做的事语句
ENDFOR
是相同作用。
DO WHILE .T.   &&是在满足每件时结束循环(低版本VFP必须使用,不能使用FOR)
IF *****
EXIT           &&条件满足,跳出循环
ENDIF
ENDDO
DO WHILE NOT EOF()  &&这种形式用于表。当超过表的最后记录(多一条),循环结束。
循环间需要做的事语句
SKIP
ENDDO
[br][br]-=-=-=-=- 以下内容由 vfbpgyfk 时添加 -=-=-=-=-
DO WHILE 中需要做的事与FOR中需要做的事基本一样,差别是,FOR不必计数,自动进行,前需要计数。
 楼主| 发表于 2010-5-24 11:29 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

[这个贴子最后由白新岭在 2010/05/24 11:56am 第 1 次编辑]

邮件我已经收到。
也打开看了看,还没有实际运行。
上楼您对我写的程序进行了注解和分析。我按照你的分析从新编译了一下。还是有些问题:显示操作符与数据类型不符,还有找不到变量bpz不知是什么原因造成的。
先生能不能编一个这样的程序,共有三个表,每个表中就只有一个字段,其中两个表分别有10条记录和17条记录,假设把存10条记录的作为外循环次数(以字段的实际值做变量值,不是用第几条对应的n值作为变量),另外以17条记录的表作为内循环值,需要做的是:bpz(被判断值,即被处理的数据为)=存10条记录的表中第一条记录值+存记录17条的表中的第一条记录值*33,(在此内循环中,每一个外循环确定后,内循环都从第一条记录到最后一条,执行外后返回外循环),在内循环中,被判值如果没有被条件筛选出局,就保存下来,次数据保存到第三个表中,已经设计好的表中,可以把外循环值的记录号和内循环值的记录号一起保存起来。存10条记录的表可以用1,3,5,7,11,...19(不要用2n-1代替,要用字段变量付给内存变量),存17条记录的可以用0,1,2,....16,仍然不许用记录号代替(一样用字段变量付给内存变量),验证条件就定为2,如果“被判值对模2的余数为0,就什么也不做,继续执行下一条命令,如果不能整除就保存到第三个表中,(同时可以保存当时的外循环记录号,内循环记录号)。
发表于 2010-5-24 11:49 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

您能把程序发到我的邮箱吗?
发表于 2010-5-24 11:59 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

在您的程序中,我也没有找到“变量bpzbu”,只看见“bpz”。
 楼主| 发表于 2010-5-24 14:45 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

下面引用由vfbpgyfk2010/05/24 11:59am 发表的内容:
在您的程序中,我也没有找到“变量bpzbu”,只看见“bpz”。
这是键盘造成的误会,我本来是说,程序提示:找不到变量bpz,可写到这儿时,正好出问题,即键盘上的,前清除键不能用,delete拆除键也不能用,可是那里(指bpz后面又跟着bu这两个多于字母,只好点击发送,接着我又点击的编辑,再这个期间您恰好看到我发的帖子,这就产生的这一现象(现在你在阅读那个帖子就明白是怎么一回事了。
邮件我已经发出,请查收。
 楼主| 发表于 2010-5-24 14:54 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

我发一个Excel压缩文件,里边有一个产生初始值的方法,在Excel中对于2维数据很好处理,一组数据放在A列上,一组数据放在第一行就可以了,这两组数据的交叉处即为被判断值bpz,同时已经处理过,把符合条件的(没有被筛除掉的)以原值显示,(在vfp中需要打印到预先设计好的表中(即增加记录的代码),不符合条件的以0显示,对这些被判断值什么也不做。
 楼主| 发表于 2010-5-24 16:11 | 显示全部楼层

[原创]请教vfbpgyfk先生一个编程问题

[这个贴子最后由白新岭在 2010/05/24 04:20pm 第 1 次编辑]

next与endfor是相同的(这与TURE,用.T. .t. .Y. .y.四个中的任何一个都行是一个意思)
在vfp的基础知识中有这样的注释,“│”表示或,在for循环结束时,用了endfor│next,
它表示用其中之一就可以了。从哪个错误的小程序中可以得到验证,只是没有调入“生成初始值7”的字段[生成元7]的记录值,而是调用了序号值1,2,3,问题就出在这里。
如何调用表中的字段的具体值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2024-9-29 15:35 , Processed in 0.125000 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表