我需要创建一个程序来接收成绩,然后做平均值和中位数等等。输入将是一个接一个的等级,并在输入-1时结束。我不知道预先输入了多少等级。我怎样才能有效地做到这一点?即使我不知道会有多少个物体,我可以把它变成一个阵列吗?我不能使用矢量等,它不在允许的材料中。如果不可能,我该怎么办呢? 感谢
答案 0 :(得分:1)
您可以使用动态分配的内存。不确定在你的情况下是否认为这是允许的。阵列不会做;当一个问题表明"我们不知道我们将得到多少输入时,没有任何合理最大值的估计,这意味着具有预定大小的任何东西都是错误的。
您真的需要将所有数据存储在某个地方吗?除平均值和中位数外,您还需要计算什么?如果你有一个实际的集合,你需要对其进行排序以找到中位数,这是非常昂贵的。
考虑采用其他方法来解决这个问题。
平均很容易,将等级之和除以计数;无需保留任何特定等级输入即可。
至于中位数,既然我们正在谈论成绩,我认为他们不能只是任何数字,对吧?它们可能是1到4之间的整数,或者你可能有1.5,但不是1.25?这取决于输入限制,但是如果你只能获得1,2,3,4,5,6等级,为什么不创建一个包含六个元素的数组,只计算每个等级的出现次数。知道输入的总成绩,您可以找到中位数。