Foxtable(狐表)用户栏目专家坐堂 → 想做一个排位表


  共有13458人关注过本帖树形打印复制链接

主题:想做一个排位表

帅哥哟,离线,有人找我吗?
有点蓝
  31楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106665 积分:542508 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/11 13:40:00 [只看该作者]

看22楼第二点
比如ids2有3个项目,索引就只有0/1/2,如果使用了3,如ids2(3),都没有第4个项目,就出现了上面的错误

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  32楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/11 13:43:00 [只看该作者]

  我搞这个设计纯为学习,有这样的设想,想实现这样的效果,就这么简单。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106665 积分:542508 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/11 13:55:00 [只看该作者]

代码上的错误我可以指出来。这种排位的算法和逻辑一看就头疼,个人能力有限,解决不了。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  34楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/11 13:59:00 [只看该作者]

谢谢指教,能指出我代码错误就可以了,算法我慢慢想,谢谢你,我能搞尽量搞,不强求,不就是学习,又没人逼我。
[此贴子已经被作者于2020/4/11 23:53:42编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
shenyl0211
  35楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2020/4/11 16:58:00 [只看该作者]

1、我说10人就真的是10人吗?如果真的只有10人,一支笔、一张纸就解决了,还用得着上软件、电脑吗?你怎么喜欢证明你的思维特殊化、窄了呢?
2、楼主扯得太远了,你觉得软件与人数、赛程、轮数、同分等等有一毛钱关系吗?同分问题不是靠规则解决的吗?
3、作为一个软件,必须考虑规则,离开规则谈软件开发的逻辑、让别人查看你的代码是否正确,不是为难别人吗?
4、即使你的代码没问题,也不能证明你的软件满足规则要求吧?
5、软件不能解决全部问题,特殊问题还需要人的参与,需要人根据规则来解决。不是吗?
6、我和版主一样,都特别强调规则和逻辑。你强调的同分问题也是规则问题。如果有100人参赛,最后2名同分,他们会在乎排名吗?如果都是0分,你有天大的本事也解决不了他们的排名吧?如果前2名同分,谁排第一还不是根据规则吗?如果是循环积分赛,他们已经赛过了,已经知道他们谁胜谁负了,你用得着纠结吗?当然,如果没有相应的规则,或者出于偏袒,人为给败者一次机会,你觉得软件能解决这个问题吗?
7、如果甲胜乙、乙胜丙、丙胜甲,这是常见的现象,当甲乙丙积分相同时,软件能解决吗?当仅甲乙积分相同且高于丙时,按照你的逻辑需查看与丙对战的积分,则应该是乙胜,但乙明明输给甲了呀?这种纠正符合规则和逻辑吗?
8、循环积分赛是比较公平的。如果不是,则根本不存在积分的问题,也就不存在同分的问题。100人参赛,第1轮被淘汰的50人,不存在名次问题。小学运动会上初赛、复赛被淘汰的人需要考虑名次吗?高考落榜的人需要考虑名次吗?只取前2名的时候,需要给出第3名是谁吗?
9、胜负只是暂时的,只是针对本次参赛的人而言的,不代表下次,更不代表永远。请问,简单的名次够用吗?
10、表是根据规则设计的,代码是根据规则编写的,设计和编写过程中可以反过来纠正规则中存在的错误,这样才便于软件的开发和操作。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  36楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/11 17:34:00 [只看该作者]

  这是他们现用的规则我就要安他们的规则设计,几十人的比赛会设很多奖,有老年的、青年的、女子的,等等,有时奖前十几名,或二十名,他们没分开比赛,都是安个人累计积分和跟对手下的累计积分排名安排坐位,名次越前对手水平越相当,这样才相对公平,群里不泛专业象棋裁判,象棋组织、象棋教育推广者,还有重点大学数学教授,他们对公平、准确的严刻、较真可想而知,仿佛这才显其高级知识份子的身份、水平,人家安这要求排名次位置,我们就要安这规则做设计。
[此贴子已经被作者于2020/4/11 17:40:35编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  37楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/11 21:13:00 [只看该作者]

我把算法代码改成这样,死机了,请帮我看看哪的问题,谢谢。
DataTables("对阵表").DataRows.Clear
Dim bsrq As WinForm.DateTimePicker = e.Form.Controls("rq")
Dim qsmc As WinForm.ComboBox = e.Form.Controls("棋赛名称")
Dim di1 As String = qsmc.Value
Dim m As WinForm.TextBox = e.Form.Controls("第几轮")
Dim di2 As Integer = m.Value = 1
Dim di3 As Date = bsrq.Value
Dim all As Boolean = True
'If DataTables("对阵表").DataRows.count = 0 OrElse DataTables("对阵表").DataRows Is Nothing Then
    'DataTables("对阵表").AddNew
'End If
For Each ds As DataRow In DataTables("对阵表").DataRows
    ds("桌号") = 0
    Dim di4 As Integer = ds("桌号")
    Dim dr As DataRow = DataTables("比赛积分").SQLfind("棋赛名称 = '" & di1 & "'")
    If DataTables("比赛积分").DataRows.count = 0 OrElse dr Is Nothing Then
        Dim ls As Integer = DataTables("基本信息").SQLGetValues("棋赛名称|姓名|身份", "棋赛名称 = '" & di1 & "' And 姓名 is not null and 身份 = '参赛人'").Count
        Dim ids1,ids2 As New List(of Integer) '用于存储洗牌前后的位置
        For i As Integer = 0 To ls -1 '准备初始的牌
            ids1.add(i)
        Next
        For i As Integer = 0 To ls - 1 '开始洗牌
            Dim idx As Integer = ids1(rand.Next(0,ids1.count))
            ids2.Add(idx)
            ids1.Remove(idx)
            Dim n = 2
            If ls >= n Then
                Dim ls1 As new List(Of Integer)
                Do While ls1.count <= 2
                    Dim a = Rand.Next(0, 1)
                    If ls1.Contains(ids2(a)) = False Then
                        ls1.add(ids2(a))
                    End If
                Loop
                di4 = di4 + 1
                If ls1.count = 1 Then ds("红方_编号") = ls1(0)
                If ls1.count = 2 Then ds("黑方_编号") = ls1(1)
            End If
        Next
    End If
Next
DataTables("对阵表").Save()
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛.foxdb


密码:888888
[此贴子已经被作者于2020/4/12 0:08:00编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  38楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/11 21:43:00 [只看该作者]

把这段代码注识不死机了,但没任何数据生成,既然有循环语句,对阵表不会生成空表,就没必要添加这行了。
'If DataTables("对阵表").DataRows.count = 0 OrElse DataTables("对阵表").DataRows Is Nothing Then
    'DataTables("对阵表").AddNew
'End If
[此贴子已经被作者于2020/4/11 21:50:05编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  39楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/4/12 13:56:00 [只看该作者]

DataTables("对阵表").DataRows.Clear
Dim bsrq As WinForm.DateTimePicker = e.Form.Controls("rq")
Dim qsmc As WinForm.ComboBox = e.Form.Controls("棋赛名称")
Dim di1 As String = qsmc.Value
Dim m As WinForm.TextBox = e.Form.Controls("第几轮")
Dim di2 As Integer = m.Value = 1
Dim di3 As Date = bsrq.Value
Dim all As Boolean = True
For Each ds As DataRow In DataTables("对阵表").DataRows
    ds("桌号") = 0
    Dim di4 As Integer = ds("桌号")
    Dim dr As DataRow = DataTables("比赛积分").SQLfind("棋赛名称 = '" & di1 & "'")
    If DataTables("比赛积分").DataRows.count = 0 OrElse dr Is Nothing Then
        Dim ls As Integer = DataTables("基本信息").SQLGetValues("棋赛名称|姓名|身份", "棋赛名称 = '" & di1 & "' And 姓名 is not null and 身份 = '参赛人'").Count
 Dim n = 2
        If ls >= n Then
            Dim ls1 As new List(Of String)
            Do While ls1.count < n
                Dim i As Integer = rand.Next(0,ls)
                'Dim i = rand.Next(0,ls)
                If ls1.Contains(i) = False Then
                    ls1.add(ls(i))
                'End If
            Loop
            di4 = di4 + 1
            If ls1.count = 0 Then ds("红方_编号") = ls1(0)
            If ls1.count = 1 Then ds("黑方_编号") = ls1(1)
        End If
        'Next
    End If
Next
DataTables("对阵表").Save()
  我把算法改为这样,但红色标注的判断是否重复出了问题,麻烦帮我看看应怎么写,谢谢。
[此贴子已经被作者于2020/4/12 16:56:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  40楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106665 积分:542508 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/12 22:21:00 [只看该作者]

f ls1.Contains(ls(i)) = False Then

 回到顶部
总数 120 上一页 1 2 3 4 5 6 7 8 9 10 下一页 ..12