Foxtable(狐表)用户栏目专家坐堂 → 如何count集合中符合某个条件的值的个数


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

主题:如何count集合中符合某个条件的值的个数

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/7 8:44:00 [显示全部帖子]

累加呀

dim sum as integer
for i as integer = 0 to 100
if i mod 3 = 0 then
sum += 1
end if
next

msgbox("100以内3的倍数个数:" & sum)

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/7 8:51:00 [显示全部帖子]

看3楼,遍历判断,然后累加

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/7 9:23:00 [显示全部帖子]

反正都已经在遍历了,再加上一个累加而已,不会有效率问题。

Rand.Next(1,5)只能是1~4

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/7 11:02:00 [显示全部帖子]

没看懂这个代码的逻辑,不知道要做什么判断。截图并使用文字说明一下具体要做什么

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/7 12:03:00 [显示全部帖子]

排课涉及到比较复杂的算法,反正我感觉基本和图算法差不多,脑袋不够用。

不但要考虑到科目每天要岔开,还要考虑到一个老师可能会教2个班,副科甚至可能会教5个班,要考虑到岔开不同班的排课,有些主科老师可能还兼职副科,.........

所以建议排差不多了,剩下的手工调整吧

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/7 13:24:00 [显示全部帖子]

蓝色的部分代码是干什么用的?

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/7 17:16:00 [显示全部帖子]

那要使用字典

Dim tb As Table= Tables("课程安排")
For Each r As Row In tb.Rows
    Dim js As Integer=r("节数")
    Dim i As Integer = 1
    Dim xqs As New Dictionary(Of Integer,Integer)
    Do While i <= js
        Dim xq As Integer = Rand.Next(1,6)
        Dim jc As Integer = rand.Next(1,8)
        Dim dr As DataRow = DataTables("课程详表").find("班级='" & r("班级") & "' and 星期 = '" & xq & "' and 节次='" & jc & "' and 科目 is null")
        If dr IsNot Nothing
            If xqs.ContainsKey(xq) = false orelse xqs(xq) < Math.Ceiling(r("节数")/5)
                dr("科目")=r("科目")
                dr("教师姓名")=r("教师姓名")
                i=i+1
if xqs.ContainsKey(xq
xqs(xq) += 1
else
                xqs.Add(xq,1)
end if
            End If
        End If
    Loop
Next

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/8 8:44:00 [显示全部帖子]

就是【当天节数小于等于平均日课时的最大整数】,xqs(xq)就是当天节数。

如果死循环,那就是这里的问题,说明一直没有符合条件的数据:
Dim dr As DataRow = DataTables("课程详表").find("班级='" & r("班级") & "' and 星期 = '" & xq & "' and 节次='" & jc & "' and 科目 is null")

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/17 16:58:00 [显示全部帖子]

我也搞不定

 回到顶部