2017-10-21 126 views
-5

我遇到了一个小问题,我试图做一个快速计算。变量没有被赋值

MF = 1/N * X

,所以我写了一个小PROGRAMM这应该这样做。 我使用全局变量:

float mf = NULL; 
float xCalce = NULL; 
int n = NULL; 
vector<float> x = {-10.2, -8.0, 0.5, 5.9, 3.5, 22.7, 15.0, -1.8, -3.1, 7.7, 11.2, 7.9, -3.3, 
        -1.6, 15.3, 22.6, 3.6, 5.7, 2.0, -18.2, -27.5, 23.1, 18.1, 9.7, 25.8}; 

我从数字的向量计算x和我使用的是forwhile循环

for (float xs : x) { 
     sumX(xs); 
    }; 

将其发送给这个函数:

void sumX(float &x) 
{ 
    xCalce += x; 
} 

哪些工作。

我想为mf做同样的事情,但我错过了一些东西,因为它没有保存到全局变量mf;

void calcMf(float x, int n) { 
    mf =(1/n)*(x); 
} 

当我打电话调试,n和x是正确的,但正如我前值表示不保存在MF?

EDIT1:加入载体中,一切在文本 EDIT2描述:加入的主要功能

int main() { 


    n = x.size(); 
    // 

    for (float xs : x) { 
     sumX(xs); 
    }; 
    calcMf(xCalce,n); 


    cout << "summ of x : " << xCalce << endl; 
    cout << "mf: " << mf << endl; 
    cout << n << endl; 
} 
+4

'float mf = NULL;'最有可能不会做你认为它做的事。 – user0042

+3

'NULL'是一个空*指针*常量。 –

+2

您的帖子似乎缺少[mcve] –

回答

1

变化n至浮动,并设置MF = null表示0;

+1

你为什么要把'n'改成'float'?在这种情况下,'n'的意思是_count的东西_,让它'int'。你可以用'1.0'来代替'1',但在计算机math_中最好(大多数情况下)把division作为最后一个操作,所以我们有'1 * x/n',甚至更好'mf = x/N;'。它更简单,它按预期工作。吻。 –