VB的一个算法问题
如题。假设要统计一次期末成绩(假设一共有5个学科,考试成绩总分是由你所选择的科目决定的,你可以全选上,也可以选2科,但最少选择1科)。若计算出你所选学科的总分来作为考试成...
如题。假设要统计一次期末成绩(假设一共有5个学科,考试成绩总分是由你所选择的科目决定的,你可以全选上,也可以选2科,但最少选择1科)。若计算出你所选学科的总分来作为考试成绩,应该有5+10+10+5+1=31种不同的计算结果。我是用的Checkbox做控件,选中该科就写check.value=1。本想用if-else来实现。但是由于情况太多,求大神 有木有简单一点的算法?(我的思路如下:)
if check1.value=1 and check2.value=1 and check3.value=1 and check4.value=1 and check5.value=1 then
Text0.text=Val(text1)+val(text2)+val(text3)+val(text4)+val(text5)
(解释一下:text0.text是输出总分的地方,text1,2,3,4,5是对应科目的分数)
else
if .....
else
if.....(穷举所有情况) 展开
if check1.value=1 and check2.value=1 and check3.value=1 and check4.value=1 and check5.value=1 then
Text0.text=Val(text1)+val(text2)+val(text3)+val(text4)+val(text5)
(解释一下:text0.text是输出总分的地方,text1,2,3,4,5是对应科目的分数)
else
if .....
else
if.....(穷举所有情况) 展开
展开全部
你换个思路嘛!用累加就很容易解决了,用不着考虑有多少种组合!
dim x as single
if check1.value=1 then x=x+val(text1.text)
if check2.value=1 then x=x+val(text2.text)
if check3.value=1 then x=x+val(text3.text)
if check4.value=1 then x=x+val(text4.text)
if check5.value=1 then x=x+val(text5.text)
text0.text=x
dim x as single
if check1.value=1 then x=x+val(text1.text)
if check2.value=1 then x=x+val(text2.text)
if check3.value=1 then x=x+val(text3.text)
if check4.value=1 then x=x+val(text4.text)
if check5.value=1 then x=x+val(text5.text)
text0.text=x
展开全部
用二进制解决吧。
选中的科目为1,未选中的科目为0,那总共是2^5=32种。去掉全都不选,剩31种。
然后你就可以用 Select case 来解决这个问题了。
在实际应用中,你还可以考虑直接按位计算来解决,连Select Case都不用。
例如:假设所选科目信息保存在变量K里面
那么结果可以是 结果= 科目1成绩 x (K And 2^1) + 科目2成绩 x (K And 2^2) + ……
这样如果没选该科目,乘以零的结果也必然为零,自然就忽略掉了。
选中的科目为1,未选中的科目为0,那总共是2^5=32种。去掉全都不选,剩31种。
然后你就可以用 Select case 来解决这个问题了。
在实际应用中,你还可以考虑直接按位计算来解决,连Select Case都不用。
例如:假设所选科目信息保存在变量K里面
那么结果可以是 结果= 科目1成绩 x (K And 2^1) + 科目2成绩 x (K And 2^2) + ……
这样如果没选该科目,乘以零的结果也必然为零,自然就忽略掉了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你个思路:先定义个总分数变量 fen,再建立一个checkbox数组,check(1),check(2)......然后用for netx 循环遍历数组,在循环内,if chedk(i).value=1,then fen =fen+val(text(i).text) ,在循环外,text0.text=fen。
希望能帮到你!
希望能帮到你!
追问
其实你和楼上顶点思路一样。不过人家先回答的。就把分给他了。不过同样感谢你的精彩回答!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询