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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
如何count集合中符合某个条件的值的个数  发帖心情 Post By:2020/8/7 8:42:00 [只看该作者]


请问老师,如何count集合中符合某个条件的值的个数


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


加好友 发短信
等级:狐神 帖子:4627 积分:33767 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2020/8/7 8:43:00 [只看该作者]

循环呗

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望: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)

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/8/7 8:50:00 [只看该作者]

Dim xqs As New List(Of integer)

xqs.add(1)

xqs.add(1)

xqs.add(2)

xqs.add(1)

xqs.add(3)

xqs.add(5)

xqs.add(1)


集合增加的值不确定,如统计出集合中为1的个数


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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/8/7 8:53:00 [只看该作者]

我请教的是有不有xqs.count 加个条件来得到,如果用遍历效率会不会很低


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 List(Of 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.Count....... < Math.Ceiling(r("节数")/5)
                dr("科目")=r("科目")
                dr("教师姓名")=r("教师姓名")
                i=i+1
                xqs.Add(xq)
            End If
        End If
    Loop
Next

我的想法是在某一天安排的某学科不能超过周课时的平均数


另外Rand.Next(1,5)是不是不能得到5,我测试了一下好像没有5产生
[此贴子已经被作者于2020/8/7 8:56:51编辑过]

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


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

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

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

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/8/7 10:59: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 values As New List(Of 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 & "'")
        If dr IsNot Nothing
            Dim t As Integer=0
           For Each Value As Integer In Values
                If value=xq
                    t=t+1
                End If
            Next
            If t < Math.Ceiling(r("节数")/5)
                dr("科目")=r("科目")
                dr("教师姓名")=r("教师姓名")
                i=i+1
                values.Add(xq)
            End If
        End If
    Loop
Next

老师,这样加了后出现有些学科的节数没安齐,不要这个判断能安齐(一个班每周34节能安完),请问如何改

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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2020/8/7 11:47:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200807114312.png
图片点击可在新窗口打开查看



课程安排中已做好一个班有哪些科目,每个科目一周的节数,以上任课老师
课程详表中已有班级星期1-5,1-7节,其中周5只有6节,一个班总的周课时34节,这个在课程安排中已设置好
现在就是将各科总的34节课随机落在课程详表中去,加了集合来判断一天一科有几节课,举例说明一个班数学一周有6节,平均一天1.2,如果星期1安有数学,当天不能超过2节,这样保证不太集中
请问如何是好?



Dim tb As Table= Tables("课程安排")
For Each r As Row In tb.Rows
    Dim js As Integer=r("节数")
    Dim i As Integer = 1
    Dim values As New List(Of 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 & "'")
        If dr IsNot Nothing
            Dim t As Integer=0
           For Each Value As Integer In Values
                If value=xq
                    t=t+1
                End If
            Next
            If t < Math.Ceiling(r("节数")/5)
                dr("科目")=r("科目")
                dr("教师姓名")=r("教师姓名")
                i=i+1
                values.Add(xq)
            End If
        End If
    Loop
Next

现在改成这样,判断可能有问题,不能安完
[此贴子已经被作者于2020/8/7 17:07:37编辑过]

 回到顶部
总数 19 1 2 下一页