我正在努力研究用于计算A,B,C样式测验结果的算法的边缘情况。
测验由任意数量的问题组成,每个问题恰好有3个答案对应A,B和C.每个问题都会自动显示一个继续按钮,一旦所有问题都被回答,结果就会显示出来
有3种可能的结果,分别对应A,B和C.
显示的结果应该是最常选择的答案。
如果平均选择两个答案,结果应该是最后选择哪个答案。
这是我正在努力的最后一部分,计算这个的最佳方法是什么?在测验期间我需要存储什么?
我的初步计算是:
if (countA > countB && countA > countC)
{
result = "A";
}
else if (countB > countA && countB > countC)
{
result = "B";
}
else if (countC > countA && countC > countB)
{
result = "C";
}
else
{
// two results are equal
}
计算最后一个案例的最佳方法是什么?
答案 0 :(得分:3)
您提出的问题似乎没有考虑答案是否正确。无论哪种方式,你都可以保留7个柜台:
对于每个问题,您都会增加“当前问题索引”。如果您关心答案是否正确,请在正确时执行以下步骤。如果您不在乎,请始终执行以下步骤。
如果给出答案A,则递增“答案数A”计数器,并设置“最后答案索引A”的值。
当您点击测验结束时,您将拥有足够的数据来构建正确的答案。
答案 1 :(得分:1)
您可以将所有活动(选择答案)存储在类似列表的数据结构中。如果选择了答案,则将其添加到列表中,否则,只需将其从列表中删除即可。在计算最后一个案例时,请从列表的后面开始查找其中一个同等加权的结果。找到的第一个是最后选择的。因为它是最后选择的,所以结果就是这样。
使用此方法,您还可以通过简单计算列表中选项的出现次数来计算所有选项(A,B和C)。
答案 2 :(得分:0)
一个想法可能是引入一个数组或3个整数,每个元素对应于A,B或C.我假设每个问题都有一个数字。每次回答问题时,都会将问题编号存储在该数组中。然后你只需要遍历数组并查看哪个元素具有最高编号,即最后给出。