C++ 我需要知道如何得到正确计算的平均值和偏差
我即将完成这个项目,但我想不出来。我问过我的教授,但当他说“对于这两个函数,部分或全部参数需要通过引用传递,这样函数才能影响传入的参数。”但这让我更加困惑。如果有人有任何建议,我将不胜感激。我不希望有人只是解决它,但更多的指向我在正确的方向,因为这是如何完成学习 试过几次重写代码C++ 我需要知道如何得到正确计算的平均值和偏差,c++,C++,我即将完成这个项目,但我想不出来。我问过我的教授,但当他说“对于这两个函数,部分或全部参数需要通过引用传递,这样函数才能影响传入的参数。”但这让我更加困惑。如果有人有任何建议,我将不胜感激。我不希望有人只是解决它,但更多的指向我在正确的方向,因为这是如何完成学习 试过几次重写代码 #include <iostream> #include <cmath> //included for some pre-defined functions using namespac
#include <iostream>
#include <cmath> //included for some pre-defined functions
using namespace std;
//function PROTOTYPES will go here
void getValues(double x1, double x2, double x3, double x4, double x5);
double calcMean(double x1, double x2, double x3, double x4, double x5);
double calcDev(double stDev, double mean, double x1, double x2, double x3, double x4, double x5);
void printResults(double mean, double stDev);
//DO NOT CHANGE ANYTHING IN THE MAIN FUNCTION!!!
int main()
{
//Defining variables to store the values, the mean and the standard deviation
double x1, x2, x3, x4, x5;
double mean, stDev;
// calling all the functions
getValues(x1, x2, x3, x4, x5); // asks and reads in the 5 values.
mean = calcMean(x1, x2, x3, x4, x5); //calculates the mean
calcDev(mean, stDev, x1, x2, x3, x4, x5); //calculates the standard deviation
printResults(mean, stDev); //displays the results
return 0;
}
//the function DEFINITIONS will go below
void getValues(double x1, double x2, double x3, double x4, double x5){
cout<<"Please enter 5 values: ";
cin>>x1;
cin>>x2;
cin>>x3;
cin>>x4;
cin>>x5;
}
double calcMean(double x1, double x2, double x3, double x4, double x5){
return (x1+x2+x3+x4+x5)/5;
}
double calcDev(double stDev, double mean, double x1, double x2, double x3, double x4, double x5){
return stDev=sqrt(((pow(x1-mean, 2)+pow(x2-mean, 2)+pow(x3-mean, 2)+pow(x4-mean, 2)+pow(x5-mean, 2))/5));
}
void printResults(double mean, double stDev){
std::cout<<"The mean of the 5 values is: "<<mean<<std::endl;
std::cout<<"The standard deviation of the 5 values is: "<<stDev<<std::endl;
}
#包括
#include//include用于某些预定义函数
使用名称空间std;
//函数原型将放在这里
无效值(双x1、双x2、双x3、双x4、双x5);
双计算平均值(双x1、双x2、双x3、双x4、双x5);
双calcDev(双标准差、双平均值、双x1、双x2、双x3、双x4、双x5);
无效打印结果(双平均值、双标准差);
//不要更改主功能中的任何内容!!!
int main()
{
//定义变量以存储值、平均值和标准偏差
双x1,x2,x3,x4,x5;
双均值,stDev;
//调用所有函数
getValues(x1、x2、x3、x4、x5);//请求并读取5个值。
平均值=计算平均值(x1,x2,x3,x4,x5);//计算平均值
calcDev(平均值,标准偏差,x1,x2,x3,x4,x5);//计算标准偏差
打印结果(平均值,stDev);//显示结果
返回0;
}
//函数定义如下所示
无效值(双x1、双x2、双x3、双x4、双x5){
coutx1;
cin>>x2;
cin>>x3;
cin>>x4;
cin>>x5;
}
双计算平均值(双x1、双x2、双x3、双x4、双x5){
返回(x1+x2+x3+x4+x5)/5;
}
双calcDev(双标准差、双平均值、双x1、双x2、双x3、双x4、双x5){
返回stDev=sqrt((pow(x1平均值,2)+pow(x2平均值,2)+pow(x3平均值,2)+pow(x4平均值,2)+pow(x5平均值,2))/5);
}
无效打印结果(双平均值、双标准差){
std::cout需要通过引用传递getValues()中的输入参数,否则您当前拥有的将让用户输入值并存储到变量中,结果超出范围。
这:
应该是:
void getValues(double& x1, double& x2, double& x3, double& x4, double& x5);
此外,在实施时,还需要具备相同的功能:
void getValues(double& x1, double& x2, double& x3, double& x4, double& x5) {
cout<<"Please enter 5 values: ";
cin>>x1;
cin>>x2;
cin>>x3;
cin>>x4;
cin>>x5;
}
这意味着我们不需要返回任何内容,而是通过引用stDev传回。因此,这意味着我们需要更改calcDev(),如下所示:
void calcDev(double mean, double& stDev, double x1, double x2, double x3, double x4, double x5);
并应按以下方式实施:
void calcDev(double mean, double& stDev, double x1, double x2, double x3, double x4, double x5) {
stDev = sqrt(((pow(x1-mean, 2)+pow(x2-mean, 2)+pow(x3-mean, 2)+pow(x4-mean,
2)+pow(x5-mean, 2))/5));
}
您在哪些函数中更改参数?您需要了解按引用传递,因为getValues()除了获取用户输入并使这些值超出范围之外,什么都不做。calcDev不会按照您的想法执行。值得注意的是,您的printResults()看起来没问题:)您的问题与获取偏差的平均值无关,实际上与不理解如何从函数中获取信息有关。请尝试传递“C++‘按引用传递’”进入你最喜欢的搜索引擎。在旁注中,你肯定应该阅读有关向量的内容。请理解为什么需要这些更改,并尝试推断某些事情,例如查看主函数调用函数的方式,以及它们是否返回内容,然后从中编写正确的函数声明。希望这些评论中的一些有帮助。作为旁注,这就是为什么你应该总是初始化你的变量的原因,看起来在这种情况下你的教授不允许你更改main()但是这些变量都应该初始化为0.0。非常感谢,但我的一个问题是,与不带符号的双精度变量相比,双精度变量&double做了什么?为什么这会使它正常工作?您需要查找“按引用传递”与“按值传递”。更简单的说,就是知道并将“返回”函数外部的值n或您传递它的任何位置。否则它只是复制,不会返回值。如果您认为它解决了您的问题,请随时将其标记为您的答案,以便其他人可以发现它有用。两个链接:&
void calcDev(double mean, double& stDev, double x1, double x2, double x3, double x4, double x5);
void calcDev(double mean, double& stDev, double x1, double x2, double x3, double x4, double x5) {
stDev = sqrt(((pow(x1-mean, 2)+pow(x2-mean, 2)+pow(x3-mean, 2)+pow(x4-mean,
2)+pow(x5-mean, 2))/5));
}