平均功能不正确
Average function not working corre
我正在为我的 C++ class 开发一个程序,其中 objective 是创建一个函数来查找向量的最高值、最低值、平均值和中值 return 它作为一个结构。到目前为止,我的每个函数都在工作,但我 运行 遇到的问题是我的均值函数没有 return 正确的均值值。
#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;
它目前未初始化,可以是任何东西。
其他一些需要注意的事项:
- 您的中位数计算依赖于排序的向量
- 如果有偶数个值,中位数通常定义为两个中间值的平均值。
- 你的均值计算可能应该使用浮点而不是整数
- 最好通过常量引用而不是值将向量传递给
actions
。
Total 目前正在添加任何未初始化的内容,它可能会产生相当不可预测的结果。更改它,使其初始化为零,int total = 0;
。
您还设置了总计除以 11 的平均值。不应该是 mean = total / a.size();
吗?
我正在为我的 C++ class 开发一个程序,其中 objective 是创建一个函数来查找向量的最高值、最低值、平均值和中值 return 它作为一个结构。到目前为止,我的每个函数都在工作,但我 运行 遇到的问题是我的均值函数没有 return 正确的均值值。
#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;
它目前未初始化,可以是任何东西。
其他一些需要注意的事项:
- 您的中位数计算依赖于排序的向量
- 如果有偶数个值,中位数通常定义为两个中间值的平均值。
- 你的均值计算可能应该使用浮点而不是整数
- 最好通过常量引用而不是值将向量传递给
actions
。
Total 目前正在添加任何未初始化的内容,它可能会产生相当不可预测的结果。更改它,使其初始化为零,int total = 0;
。
您还设置了总计除以 11 的平均值。不应该是 mean = total / a.size();
吗?