Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我需要知道如何得到正确计算的平均值和偏差_C++ - Fatal编程技术网

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));
}