在C ++中的函数之间传递变量

Emi*_*lDo 1 c++

我的任务是输入和读取几个双精度变量并将它们存储在vector中,然后函数compute()应该计算矢量中存储的所有变量的总和及其平均值。我已经修复了这些功能,它们运作良好。问题在于最终函数print()..函数应打印出结果-“ sum”和“ average”变量。但是我的print()代码无法正常工作,并打印出错误的数字。这是我的代码:

#include <iomanip>
#include <cstdlib>
#include <iostream>
#include <vector> 
using namespace std;

vector<double> read(){//this function works fine
    cout << "Write some numbers with space between them?" << endl;
    double numz;
    vector<double> myvector;
    do {
    cin >> numz;
    myvector.push_back (numz);
    } while (numz);
    return myvector;
}  

void compute(double average, double sum, vector<double> &myvector){//this function works fine
//if i put cout in this function it calculates correctly
    vector<double>::iterator it;
    for ( it=myvector.begin() ; it < myvector.end()-1; it++ ){
    sum += *it;
    }
    average = sum/myvector.size();

}

void print(double average, double sum){//this is printing out wrong numbers
    cout.precision(2); 
    cout << sum << endl;
    cout << fixed  << average << endl;
}


int main (){
    vector<double> myvector = read();
    double average;
    double sum;
    compute(average, sum, myvector);
    print(average, sum);//this is printing out wrong numbers

    system("pause");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助,我了解到我的困惑在于函数之间的变量传递,但是我整天都在调试和阅读教程时一无所获。

ema*_*tel 5

只需在函数声明中的变量前面添加&,它将传递对变量的引用!

void compute(double& average, double& sum, vector<double> &myvector)
Run Code Online (Sandbox Code Playgroud)