| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1508 人关注过本帖
标题:如何能做到相同分数或相邻分数同一班级学生排序不相邻
只看楼主 加入收藏
bcly0808
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2013-3-22
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:12 
如何能做到相同分数或相邻分数同一班级学生排序不相邻
图片附件: 游客没有浏览图片的权限,请 登录注册
示例数据.rar (6.57 KB)
搜索更多相关主题的帖子: 分数 排序 相同 相邻 学生 
2022-05-19 08:42
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1064
专家分:2579
注 册:2015-12-30
收藏
得分:0 
这种需求还是头回见
感觉需要加个字段记录原始排序位置,写程序调整已排序的相对位置
2022-05-19 09:15
easyppt
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:241
专家分:451
注 册:2021-11-24
收藏
得分:0 
如果index 中的简单表达式 解决不了的话,就只能写代码了,增加一个 px 字段,然后通过程序确定每条记录的实际顺序,并更新到px字段中,最后 index on px  这个字段。
比如常规的 递归排序、冒泡排序  可以参考一下。
2022-05-19 09:35
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9802
专家分:26906
注 册:2012-2-5
收藏
得分:0 
相邻分数的标准是什么

坚守VFP最后的阵地
2022-05-19 12:27
bcly0808
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2013-3-22
收藏
得分:0 
回复 4楼 sdta
例如上图中的648和645分,来自同一班级,具体几分值没有标准
2022-05-19 13:50
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11773
专家分:43421
注 册:2006-5-13
收藏
得分:0 
这种类似人工智能的算法在VFP中实现起来比较麻烦,需要很多IF来判断和处理。可以尝试先按照分类+班级排序,如同楼主的表,然后再用IF语句排座。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2022-05-19 16:55
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:283
专家分:616
注 册:2012-9-21
收藏
得分:0 
不用太纠结,可以用笨方试试,先将分数排好,结合循环+if+标记的排除法,逐行扫描,再写入新的表,先解决了问题,再来琢磨更完美的方法
2022-05-20 01:16
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:601
专家分:1770
注 册:2017-7-16
收藏
得分:0 
实在不理解,这样的排序,有啥用处?
2022-05-21 09:36
my2318
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:14
帖 子:251
专家分:621
注 册:2014-3-18
收藏
得分:0 
估计根据考试成绩排下次的考试座次,避免同班同学前后桌
2022-05-21 10:42
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:283
专家分:616
注 册:2012-9-21
收藏
得分:20 

*试下



SELECT * FROM PX.DBF INTO CURSOR FXCURSOR ORDER BY 总分赋分 DESC READWRITE
SELECT PX
USE

SELECT FXCURSOR
GO TOP
b1=ALLTRIM(班级)
x1=ALLTRIM(姓名)
f1=总分赋分
DELETE

IF USED('aa')
SELECT aa
USE
ENDIF
CREATE CURSOR AA(x C(10),B C(10), f n(10))
APPEND BLANK
REPLACE X WITH X1 ,b WITH b1
REPLACE f WITH f1


DO WHILE .t.

SELECT FXCURSOR
LOCATE FOR .not. b1=ALLTRIM(班级) .and. .not. delete()

IF FOUND()
    b2=ALLTRIM(班级)
    x2=ALLTRIM(姓名)
    f2=总分赋分
    f1=总分赋分
    b1=ALLTRIM(班级)
    x1=ALLTRIM(姓名)
    dele
    SELECT aa
    APPEND BLANK
    REPLACE x WITH x2,b WITH b2,f WITH f2
   
    LOOP

ELSE

LOCATE FOR .not.delete()

IF FOUND()
    b2=ALLTRIM(班级)
    x2=ALLTRIM(姓名)
    f2=总分赋分
    f1=总分赋分
    b1=ALLTRIM(班级)
    x1=ALLTRIM(姓名)
    dele
    SELECT aa
    APPEND BLANK
    REPLACE x WITH x2,b WITH b2,f WITH f2
ELSE
    exit
ENDIF


ENDIF

ENDDO

SELECT FXCURSOR
USE
SELECT aa
BROWSE
2022-05-21 11:50
快速回复:如何能做到相同分数或相邻分数同一班级学生排序不相邻
数据加载中...
 
   



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

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