gpt4 book ai didi

c++ - 平均功能不正确

转载 作者:行者123 更新时间:2023-11-30 05:48:03 26 4
gpt4 key购买 nike

我正在为我的 C++ 类开发一个程序,目标是创建一个函数来查找 vector 的最高值、最低值、平均值和中值,并将其作为结构返回。到目前为止,我的每个函数都可以正常工作,但我遇到的问题是我的均值函数没有返回正确的均值。

#include "std_lib_facilities_4.h"

struct VALUES{
int lowest;
int highest;
int median;
int mean;
};


VALUES actions(vector <int> a){
VALUES b;
int lowest = 100;
int highest = 0;
int total;
int median;
int mean;
for(int i = 0; i<a.size(); i++){
if(a[i]<lowest){
lowest = a[i];
}
if(a[i]>highest){
highest = a[i];
}
total = total + a[i];
}
median = a[a.size()/2];
mean = total/11;
b.lowest = lowest;
b.highest = highest;
b.median = median;
b.mean = mean;

return b;
}


int main(){
vector <int> original;
for(int i = 0; i<11; i++){
original.push_back(i);
}
//actions(original);
VALUES ending;
ending = actions(original);
cout<< "Lowest " << ending.lowest<< "\n";
cout<< "Highest " << ending.highest<< "\n";
cout<< "Median " <<ending.median<< "\n";
cout<< "Mean " <<ending.mean<< "\n";
}

我已多次检查此文件是否有任何小错误,但一直找不到。答案显示 2983 作为运行程序时的平均值。

最佳答案

您需要将total 初始化为零:

int total = 0;

它目前未初始化,可以是任何东西。

还有一些需要注意的事情:

  • 你的中位数计算依赖于被排序的 vector
  • 如果有偶数个值,则中位数通常定义为两个中间值的平均值。
  • 您的均值计算可能应该使用 float 而不是整数来完成
  • 最好通过常量引用而不是值将 vector 传递给 actions

关于c++ - 平均功能不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28391141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com