数组和传递引用

时间:2017-07-07 18:49:22

标签: c++

我是编码新手,需要知道如何显示我的数组的Max,Min,Avg和新的标准化值。到目前为止,我有最大最小值和平均值正常工作,但我对如何让我的函数显示数组的正确新值非常困惑。关键是要使用这个功能; XI'=(XI-分钟)/(最大值 - 最小值) 我目前的代码如下:

#include <iostream>
using namespace std;

void normalizeMinMaxAvg(double data[], int size,double& min, double& max, double& avg)
{
    max = 0;
    min = 0;
    int sum = 0;
    int i;
    avg = 0;

    for (i = 0; i < size; i++) {
        sum += data[i];
        if ( max < data[i]) {
            max = data[i];
        }
        if (min > data[i]) {
            min = data[i];
        }
    }
    avg = sum/size;

    for (i = 0; i < size; i++){
        data[i] = (data[i]-min)/(max-min);
    }
}


int main() 
{
    double data[] = {-10.0,0.0,20.0,30.0,500.0};
    double min, max, avg;

    normalizeMinMaxAvg (data, 5, min, max, avg);
    cout << "min = " << min << "\n";
    cout << "max = " << max << "\n";
    cout << "avg = " << avg << "\n";
    cout << data;
    return 0;
}

3 个答案:

答案 0 :(得分:2)

您的代码正在更新数组值。但要正确显示数组值,请使用for loop,如下所示:

int arrSize = sizeof(data)/sizeof(data[0]);
for(int i =0; i<arrSize; ++i)
    cout << data[i]<<" ";

或者,您可以使用向量而不是像这样的原始数组:

vector<double> data ={-10.0,0.0,20.0,30.0,500.0};

并将by reference传递给您的函数。

答案 1 :(得分:1)

如果你想&#34;打印出来&#34;你已经多次完成你需要迭代每个成员的数组:

for (int i = 0; i < array_size; i++){
    cout << data[i] << "\n";
}

您目前正在做什么:

cout << data;

只需打印数组的地址。

答案 2 :(得分:0)

$(document).ready(function(){ $(document).on("change keyup mouseup", "#tag_content", function(){ $("#tag_keyword").val($("#tag_content").val()); }); }); 只保存数组的地址,在您的情况下,它是指向data的指针,您需要迭代数组并单独打印出每个值。