[英]Arrays and Pass-By-Reference
我是编码新手,需要知道如何显示数组的Max,Min,Avg和新的标准化值。 到目前为止,我的max min和avg正常工作,但是我对如何让函数显示正确的数组新值感到非常困惑。 关键是要使用功能; xi'=(xi-min)/(max-min)我当前的代码如下:
#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;
}
您的代码正确更新了数组值。 但是要正确显示数组值,请使用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
将其传递给您的函数。
如果要“打印”数组,则需要遍历每个成员,因为您已经做过几次了:
for (int i = 0; i < array_size; i++){
cout << data[i] << "\n";
}
您目前正在做什么:
cout << data;
将只打印数组的地址。
data
仅保存数组的地址,在您的情况下,该地址是double
的指针,您需要迭代数组并单独打印出每个值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.