标题:如何将2018年高考位次对应的分数update到2019年的位次表中
只看楼主
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
精确计算
CLOSE TABLES all
USE lk19
REPLACE fscz WITH 0 all
FOR i=1 TO RECCOUNT('lk19')
    SELECT lk19
    GO i
    iwc=wc
    SELECT fs18,wc,iwc-wc cs,ABS(wc-iwc) as csab FROM lk18  INTO CURSOR mpmp ORDER BY csab
    REPLACE fs18 WITH mpmp.fs18 IN lk19
    SELECT mpmp
    fs1=fs18
    wc1=wc
    ncs=cs
    IF ncs>0  &&ÕÒ²»µ½°´²åÖµ·¨¼ÆËã¡£
        GO 2
        fsp=fs1+(fs18-fs1)*ncs/(wc-wc1)
        REPLACE fscz WITH fsp IN lk19
    ENDIF
endfor
结果说明误差

[此贴子已经被作者于2019-7-4 14:40编辑过]


dBase有人接盘了。
2019-07-04 14:01
lj95315
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2018-3-1
得分:0 
回复 11楼 xuminxz
感谢!程序能部分运行。问题如图所示。
如果我添加了字段fscz,就会出现如下问题
只要点忽略,就会生成一些数据,但要一直点忽略


[此贴子已经被作者于2019-7-4 14:32编辑过]

2019-07-04 14:31
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
精确计算
CLOSE TABLES all
USE lk19
REPLACE fscz WITH 0 all
FOR i=1 TO RECCOUNT('lk19')
    SELECT lk19
    GO i
    iwc=wc
    SELECT fs18,wc,iwc-wc cs,ABS(wc-iwc) as csab FROM lk18  INTO CURSOR mpmp ORDER BY csab
    REPLACE fs18 WITH mpmp.fs18 IN lk19
    SELECT mpmp
    fs1=fs18
    wc1=wc
    ncs=cs
    IF ncs>0  &&找不到安插值法计算。
        GO 2
        fsp=fs1+(fs18-fs1)*ncs/(wc-wc1)
        REPLACE fscz WITH fsp IN lk19   &&fscz  n(6,2)
    ENDIF
endfor
结果说明误差很小可以按下面方法计算
CLOSE TABLES all
USE lk19
FOR i=1 TO RECCOUNT('lk19')
    SELECT lk19
    GO i
    iwc=wc
    SELECT fs18,wc,ABS(wc-iwc) as csab FROM lk18  INTO CURSOR mpmp ORDER BY csab
    REPLACE fs18 WITH mpmp.fs18 IN lk19
endfor

dBase有人接盘了。
2019-07-04 15:15
sxy166
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:68
专家分:127
注 册:2012-3-28
得分:2 
回复 13楼 xuminxz
我是94 年上的学,学的foxbase,sql不熟,想请教

    SELECT fs18,wc,iwc-wc cs,ABS(wc-iwc) as csab FROM lk18  INTO CURSOR mpmp ORDER BY csab
   iwc-wc cs  为什么没有as,后边ABS(wc-iwc) as csab 有as?


    SELECT mpmp
    fs1=fs18
    wc1=wc
    ncs=cs
    IF ncs>0  &&找不到安插值法计算。
        GO 2
        fsp=fs1+(fs18-fs1)*ncs/(wc-wc1)      这两个减法不都是等于0吗?
2019-07-04 16:20
lj95315
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2018-3-1
得分:0 
回复 13楼 xuminxz
感谢大神!!!两种方法测试通过,结果是相同的。再次感谢。
2019-07-04 17:17
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
回复 14楼 sxy166
第二个问题你应该有答案了吧。第一个中要不要 as 都可以。

dBase有人接盘了。
2019-07-04 19:33
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:2 
close databases all
set collate to "MACHINE"
set near on
use lk18 in 0
index on wc tag wc
use lk19 in 0
select lk19
blank fields fs18 all
scan
    nwc = wc
    select lk18
    seek nwc
    replace fs18 with lk18.fs18 in lk19
endscan
select lk19
go top
browse

坚守VFP最后的阵地
2019-07-04 20:25
sxy166
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:68
专家分:127
注 册:2012-3-28
得分:0 
回复 17楼 sdta
例如19表里wc75,在18表应该是73名 688分,但结果是84名687分
2019-07-05 09:22
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
得分:2 
[quote]以下是引用sxy166在2019-7-4 16:20:57的发言:

我是94 年上的学,学的foxbase,sql不熟,想请教

 这跟你哪年上学没有很大关系,这个问题用FOXBASE也可以解决的,主要是你原来用少了FOXBASE。
2019-07-05 09:34
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
以下是引用sxy166在2019-7-5 09:22:54的发言:

例如19表里wc75,在18表应该是73名 688分,但结果是84名687分

人往高处走

坚守VFP最后的阵地
2019-07-05 12:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495673-1-1.html




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

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