| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2162 人关注过本帖
标题:一个考室有两个班级学生,怎么交差排座位
只看楼主 加入收藏
andy292
Rank: 2
等 级:论坛游民
威 望:1
帖 子:86
专家分:13
注 册:2005-2-26
结帖率:71.43%
收藏
已结贴  问题点数:20 回复次数:9 
一个考室有两个班级学生,怎么交差排座位
一个考室有两个班级学生,怎么交差排座位


考试方案.rar (2.58 KB)
2017-03-15 15:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:5 
以前这类问题贴有不少。
这样处理可否?
先按“交差排座位”顺序规则,将两个班级学生随机“交差”排成一个队列,再按顺序入座。
注意的是:两班学生人数不相等时队列尾部可用“空位”补齐。
2017-03-15 16:36
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2215
专家分:3882
注 册:2007-4-27
收藏
得分:0 
最简的交叉一个班偶数位,另一个班奇数位。
问题你的交叉要求到什么程度?

只求每天有一丁点儿的进步就可以了
2017-03-16 06:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
以下是引用wengjl在2017-3-16 06:55:04的发言:

最简的交叉一个班偶数位,另一个班奇数位。
问题你的交叉要求到什么程度?

前后左右交叉,这样应该可以:一个班奇行奇数位,偶行偶数位。另一个班奇行偶数位,偶行奇数位。
2017-03-16 07:15
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:20
帖 子:391
专家分:896
注 册:2004-11-23
收藏
得分:5 
还是要看楼主的要求,排座位时是S型还是Z型。
两种排序都要确定换行时班级的切换,这中换还涉及一个问题,就是一横排的总数是奇数还是偶数,具体代码还是不一样的,不过思路差不多。

例:1、A B A B A B A B
       B A B A B A B A
       A B A B A B A B
       B A B A B A B A

    2、A B A B A B A
       B A B A B A B
       A B A B A B A
       B A B A B A B

观察第一排的最后一个和第二排的第一个,是不同的。
2017-03-16 08:16
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
其实,楼主的要求就和以前英语四、六级考试一样,要求一个A卷的前后左右都是B卷,一个B卷的前后左右都是A卷。
2017-03-16 09:03
andy292
Rank: 2
等 级:论坛游民
威 望:1
帖 子:86
专家分:13
注 册:2005-2-26
收藏
得分:0 
恩,要求不高 ,最简单的那种,一个一个班座位号交替就好
2017-03-16 09:33
andy292
Rank: 2
等 级:论坛游民
威 望:1
帖 子:86
专家分:13
注 册:2005-2-26
收藏
得分:0 
不会写代码,怎么知道人数到了,下个考室又接着原来的班
2017-03-16 09:34
ttlover7613
Rank: 2
等 级:论坛游民
威 望:2
帖 子:48
专家分:85
注 册:2016-8-29
收藏
得分:10 
建一个与考生一样的空白表
交错排位,如果人数一样,刚好一班一位,如果人数不一致,用空白填补
测试通过
图片附件: 游客没有浏览图片的权限,请 登录注册

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

CLOSE DATABASES

SELECT 0
USE 考生1   新建一个与考生一样的表
ZAP

SELECT 0
USE 考生
SET FILTER TO ALLTRIM(班级)='581'
COPY TO temp1
SELECT 0
USE temp1
SELECT temp1
zl=reccount()
SELECT 考生
SET FILTER TO ALLTRIM(班级)='582'
COPY TO temp2
SELECT 0
USE temp2
SELECT temp2
zl1=reccount()
DO CASE
  CASE zl=zl1   人数一样多
  SELECT temp1
  GO top
  SELECT temp2
  GO top
 DO WHILE NOT EOF()
   pxm=ALLTRIM(姓名)
   pbj=ALLTRIM(班级)
   SELECT 考生1
   APPEND BLANK
   REPLACE 姓名 WITH pxm,班级 WITH pbj
   SELECT temp2
   pxm=ALLTRIM(姓名)
   pbj=ALLTRIM(班级)
   SELECT 考生1
   APPEND BLANK
   REPLACE 姓名 WITH pxm,班级 WITH pbj
   SELECT temp1
   SKIP
   SELECT temp2
    SKIP
  ENDDO
  CASE zl>zl1    班级为581的人数多
   SELECT temp1
  GO top
  SELECT temp2
  GO top
  SELECT temp1
 DO WHILE NOT EOF()
   SELECT temp1
   pxm=ALLTRIM(姓名)
   pbj=ALLTRIM(班级)
   SELECT 考生1
   APPEND BLANK
   REPLACE 姓名 WITH pxm,班级 WITH pbj
   
   SELECT temp2
    IF NOT eof()
    pxm=ALLTRIM(姓名)
    pbj=ALLTRIM(班级)
    SELECT 考生1
    APPEND BLANK
    REPLACE 姓名 WITH pxm,班级 WITH pbj
    SELECT temp2
     SKIP
     ELSE
     
    SELECT 考生1
   APPEND BLANK
   REPLACE 姓名 WITH '',班级 WITH ''
  ENDif
   SELECT temp1
   skip
enddo  
  CASE zl<zl1    班级为582的人数多
   SELECT temp1
    GO top
  SELECT temp2
    GO top
  SELECT temp2
 DO WHILE NOT EOF()
   SELECT temp2
   pxm=ALLTRIM(姓名)
   pbj=ALLTRIM(班级)
   SELECT 考生1
   APPEND BLANK
   REPLACE 姓名 WITH pxm,班级 WITH pbj
   
   SELECT temp1
    IF NOT eof()
    pxm=ALLTRIM(姓名)
    pbj=ALLTRIM(班级)
    SELECT 考生1
    APPEND BLANK
    REPLACE 姓名 WITH pxm,班级 WITH pbj
    SELECT temp1
     SKIP
     ELSE
     
    SELECT 考生1
   APPEND BLANK
   REPLACE 姓名 WITH '',班级 WITH ''
  ENDif
   SELECT temp2
   skip
enddo  
endcase

[此贴子已经被作者于2017-3-16 10:37编辑过]

2017-03-16 10:34
andy292
Rank: 2
等 级:论坛游民
威 望:1
帖 子:86
专家分:13
注 册:2005-2-26
收藏
得分:0 
谢谢楼上的分享
2017-03-17 08:39
快速回复:一个考室有两个班级学生,怎么交差排座位
数据加载中...
 
   



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

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