| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5079 人关注过本帖
标题:初学者的困惑(分数段的统计)
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9799
专家分:26886
注 册:2012-2-5
收藏
得分:0 
在29楼的基础上做了改进
程序代码:
CLOSE DATABASES ALL 
USE hz1 IN 0
nRecc=RECCOUNT()
CALCULATE Max(bj) TO nMax
CREATE CURSOR tt (bj c(2),lb c(20),rs n(4))
cField="班级 c(2)"
FOR i=1 TO INT(0.85/0.05) STEP 2
    SELECT Hz1
    CALCULATE MIN(Smzf) TO nMin FOR Smzfjm<=nRecc*0.05*i
    cField=cField+","+"F"+TRANSFORM(INT(nMin))+"分以上"+" n(4)"
    INSERT INTO tt ;
    SELECT PADL(bj,2,"0"),"F"+TRANSFORM(INT(nMin))+"以上" ,;
        SUM(IIF(smzfjm<=INT(nRecc*0.05*i),1,0)) ; 
        FROM hz1 GROUP BY bj
ENDFOR
CREATE CURSOR ttt (&cField)
SELECT rs FROM tt ORDER BY bj INTO ARRAY Array_Rs
DIMENSION Array_Rs[ALEN(Array_Rs,1)+nMax,1]
FOR i=1 TO nMax
    Num_ber=(i-1)*10+1
    =AINS(Array_Rs,Num_ber)
    Array_Rs[Num_ber,1]=PADL(i,2,"0")
ENDFOR
DIMENSION Array_Rs[nMax,FCOUNT("ttt")]
INSERT INTO ttt FROM ARRAY Array_Rs
SELECT ttt
BROWSE 


[此贴子已经被作者于2018-9-7 18:48编辑过]


坚守VFP最后的阵地
2018-09-04 09:04
schtg
Rank: 12Rank: 12Rank: 12
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1545
专家分:3003
注 册:2012-2-29
收藏
得分:0 
回复 31楼 sdta
向你学习,谢谢!

[此贴子已经被作者于2018-9-8 06:55编辑过]

2018-09-07 18:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9799
专家分:26886
注 册:2012-2-5
收藏
得分:0 
回复 32楼 schtg
多谢

坚守VFP最后的阵地
2018-09-07 18:48
shxhesoft
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2011-12-12
收藏
得分:0 
学习了,马上要用到,留个足迹
2018-09-07 21:31
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:601
专家分:1770
注 册:2017-7-16
收藏
得分:0 
*!*    根据比例得到最低分
CLOSE TABLES ALL
CLEAR
SET TALK OFF
USE hz1
INDEX on -smzf TAG zfa
COUNT TO zrs FOR smzf>0
DIMENSION  gs(2,9)
FOR i=1 TO 9
gs(1,i)=0.05+0.1*(i-1)
j=0
    SCAN
    j=j+1
    IF j=INT(zrs*gs(1,i))
    gs(2,i)=smzf
    exit
    ENDIF
    ENDSCAN
ENDFOR
DELETE TAG zfa
CLOSE TABLES ALL

*!*根据最低分建立分段表
fdb0="create table fdb(班级  N(3,0)"
FOR i=1 TO 9
fdb0=fdb0+",≧"+ALLTRIM(STR(gs(2,i)))+" N(3,0)"
ENDFOR
fdb0=fdb0+")"
&fdb0
CLOSE TABLES ALL

*!*    在原始表中确定班级的个数放到数组bjs0
DIMENSION bjs(1,1)
SELECT bj DISTINCT FROM hz1 INTO ARRAY bjs
ns=ALEN(bjs,1)
DIMENSION bjs0(ns+1,1)
ACOPY(bjs,bjs0)
bjs0(ns+1,1)=0
CLOSE TABLES ALL

*!*    分数段统计表
DIMENSION fdsz(10)
USE hz1
FOR u=1 TO ns+1
IF u<ns+1
SET FILTER TO bj=bjs0(u)
ELSE
set filter to
ENDIF
fdsz(1)=bjs0(u)
FOR v=2 TO 10
COUNT TO fdsz(v) FOR smzf>=gs(2,v-1)
ENDFOR
INSERT INTO fdb FROM array fdsz
ENDFOR
set filter TO
SELECT fdb
BROWSE
CLOSE TABLES all

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2018-10-4 09:37编辑过]

2018-10-01 09:33
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:601
专家分:1770
注 册:2017-7-16
收藏
得分:0 
把一个复杂的问题,分解成若干个简单的问题(四个)
然后逐个来解决它。这是我经常采用的,也是行之有效的方法

宁愿程序代码写得长一点,也要增加注释语句,以提高程序的可阅读性。

能够解决问题的办法就叫[好办法]
2018-10-01 09:41
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2197
专家分:3838
注 册:2007-4-27
收藏
得分:0 
以下是引用gs2536785678在2018-10-1 09:41:32的发言:

把一个复杂的问题,分解成若干个简单的问题(四个)
然后逐个来解决它。这是我经常采用的,也是行之有效的方法

宁愿程序代码写得长一点,也要增加注释语句,以提高程序的可阅读性。

能够解决问题的办法就叫[好办法]


很好

只求每天有一丁点儿的进步就可以了
2018-10-04 10:14
快速回复:初学者的困惑(分数段的统计)
数据加载中...
 
   



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

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