我也是编程新手,正在尝试将结构数组和“选项”传递给函数。然后我希望函数能够操作结构数组中的数据。
struct coordinates{
int x;
int y;
int z;
}COORD;
option 参数是一个整数,它将指定要操作的结构的哪一部分。
- 操纵 x --- 选项 = 0
- 操纵 y --- 选项 = 1
- 操纵 z --- 选项 = 2
这方面的一个例子如下所示。该函数采用结构数组并对数据点指定的数据点进行 3 点移动平均。我遇到的问题是我正在尝试构建的程序在每个结构中都有 50 多个成员,因此手动写出每个 if 语句真的很乏味。我要问的是是否有更优雅的解决方案???
#include <iostream>
struct coordinates{
int x;
int y;
int z;
}COORD;
int main() {
COORD points[10];
// Initialising points
for(int i = 0, i < 10, i++){
points[i].x = 1;
points[i].y = 2;
points[i].z = 3;
}
//(struct,startpoint,option)
std::cout << movingaverage(&points,3,1); // Output
}
int movingaverage(COORD *data, int start_point, int option){
if(option == 0) {
// Assigns the "start" value of the sum value.
sum = data[start_point]->x;
sum = sum + data[start_point - 1]->x;
sum = sum + data[start_point + 1]->x;
}
else if(option == 1) {
// Assigns the "start" value of the sum value.
sum = data[start_point]->y;
sum = sum + data[start_point - 1]->y;
sum = sum + data[start_point + 1]->y;
}
else if(option == 2) {
// Assigns the "start" value of the sum value.
sum = data[start_point]->z;
sum = sum + data[start_point - 1]->z;
sum = sum + data[start_point + 1]->z;
}
sum = sum / n;
return sum; //Sum is the moving average
}