作业帮 > 数学 > 作业

如图有A B C三组,(勾选完成后会返回一个值,该值是根据以下规则算出来的,)

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/09/01 17:48:58
如图有A B C三组,(勾选完成后会返回一个值,该值是根据以下规则算出来的,)
1.如果只勾选A组中的,得到的结果是他们对应的值相加再减去 (13 *(勾选的个数-1))
2.如果只勾选B组中的,得到的结果是他们对应的值相加再减去 (14 *(勾选的个数-1))
3.如果ABC组混合勾选了,那么各组以上面2条规则算出结果后,将各组的结果值相加,相加完后减去(12 *(混合的组数-1)) (注:混合的组数指的是如:AB混合那么即指2组)
(图中未设置值的为全选按钮不作考虑)
以上是规则
以下是问题:
1.我要根据一个值.这个值是根据上面的规则算出的结果如:3903 我想知道这个值“在修改状态下可见”这个选项目有没有被勾上(即值为141)
2:我同样根据这个值.我希望得到哪些条目被勾选上了
我要的是公式。两道题要两个公式。贴了公式就给分了。刚才一楼三楼都答对了。是怎么算的。贴公式出来就行了
没必要把条目的值,设置的这么复杂.
如果是由你来编程,
你可以把从A1、A2……A5,到B1……B4、C1,顺序设置成十进制的
1、10、100、1000、10000…….
条目未选,就加0,选择了,就加上对应的数值.
这样把最终的和值当做字符串处理,字符串里有几个1,就是勾选了几项,
第几位是1,就代表这项被勾选.
同样,顺序设置成十进制的
1、2、4、8、16……(就是二进制的1、10、100、1000……)一样可以. 
后来我又研究了你的值设置,发现了里面的玄机.如附图:
每个选项的数值化为2进制,可以发现,后4位是选择状态信息,4位往前是一一对应选项的.
根据你的规则,如单选A、B或C中的一项、多项时,最终值的后四位为11XX的形式,即单选A中的一或多项,最终值的后四位为1101,单选B时1110,单选C时1100.
混合选择时,后四位11XX中多余的的1100(即十进制数12)被减掉,还是留下形如11XX的形式.
而最终值除去后4位,之前每位出现的1,唯一对应某一个选项.
因此判断3903,选择的选项值有:
2060、1038、526、270、45、29,没有选择141.
因此,解决了你的问题,只要把算出的结果化为2进制,咔嚓掉后4位,看前面的二位数,作判断和和查表,可以知道单选还是混选、选择了哪些项.