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