求数组C++的平均值

求数组C++的平均值,c++,arrays,average,C++,Arrays,Average,我试图用一个函数来计算测验的平均值。我不断调整它,但它只是不断返回10。该计划的前提是要求用户提交他们的10分测验。这些是放置在数组quizarray[]中的输入。然后我将所有信息从quizarray复制到另一个tempArray。然后对tempArray进行排序,并将其用于calcQuizAverage函数。这个函数应该返回两个平均值中的一个。这取决于测验的数量 如果没有进一步的解释,您的代码应该做什么是不可理解的。根据标题,是否要计算数组中的平均值? 以下代码将执行此操作: double c

我试图用一个函数来计算测验的平均值。我不断调整它,但它只是不断返回10。该计划的前提是要求用户提交他们的10分测验。这些是放置在数组quizarray[]中的输入。然后我将所有信息从quizarray复制到另一个tempArray。然后对tempArray进行排序,并将其用于calcQuizAverage函数。这个函数应该返回两个平均值中的一个。这取决于测验的数量


如果没有进一步的解释,您的代码应该做什么是不可理解的。根据标题,是否要计算数组中的平均值? 以下代码将执行此操作:

double calcQuizAverage(int quizArray[], int numberOfQuizzes){
  double avrg = 0.0;
  int a = 0;
  for (a = 0; a< numberOfQuizzes; a++){
    avrg += quizArray[a];
  }
  return avrg / static_cast<double>(numberOfQuizzes);
}

int main(int argc, char* argv[]){
  int array[] = { 0, 1, 2};
  double x = calcQuizAverage(array, 3);
  return 0;
}
不清楚,增加if子句的原因是什么:您的函数应该始终返回一个值,您可能希望将最后一个“else-if”替换为“else”?。

由于sum变量是double,您不需要在这么多地方进行强制转换。
avrg= double(((sum) / (10* numberOfQuizzes)) * 100);

e.g.
avrg = (sum/(numberofQuizzes*10.0))*100.0;
此外,您的代码可以通过而不是使用以下表单进行整理:

int a;
a=0;
for (a=0; ...) {
而是写:

for (int a=0; ...) {
buildQuizArray函数没有返回输入的测验数量-我怀疑您是想写一个返回;,而不是返回a+1;这可能是关键问题

关于向量,向量是一个容器类,可通过标准库使用include获得。向量可以根据需要增长,并具有多种有用的函数,特别是myVector.size返回myVector的长度。这将避免在阵列中到处传递大小。您也不需要分配特定的12个条目,这样就可以使用更简单的排序函数,因为您不必避免尾随的零


我还建议只在使用它的if循环中计算和定义lowSum-这减少了它的范围,这不是一个真正的问题,也意味着你不必计算它,除非它在小程序中使用,也不重要,但总体上值得考虑

1。你应该在分开之前投,而不是在分开之后。2.神奇的数字10和100是什么?100如果你转换成%我能理解。每次测验的最高分数是10分吗?是的,很抱歉。忘了提了。你说在我分开之前选角是什么意思?calcQuizAverage应该返回什么?“测验平均值”是否等于参数数组中的平均值?强制转换是一项操作,括号控制操作顺序。doublea/b与doublea/b不同,位应返回avrg。这是参数数组中测验的平均值。虽然if,else if在定义上不包括所有可能性,但什么时候int不能同时为2?@chrisb2244很好-永远不会,但据我所知,编译器不一定会注意到这种情况。如果函数声明为返回值而没有显式返回值,则从该函数的末尾脱落会导致未定义的行为。在这些情况下,gcc 4.9.0还将向-Wall投诉。这里有一个例子:谢谢!!!!!另外,感谢您提供有关向量的快速课程,并建议使用低和。
int a;
a=0;
for (a=0; ...) {
for (int a=0; ...) {