我想要在我的2维数组中填充时检查它。 但它不起作用,因为我不知道如何知道哪一个是完整的value_array [x] [当它已满时]。
我可以做静态短的array_status1 = 0; static short array_status2 = 0; static short array_status3 = 0; static short array_status4 = 0;当我使用其中一个dms = 1,2,3,4时增加它。但还有另一种方式吗?
由于if(array_status> array_length),我的程序无法正常工作。如果我的函数不只是为一个dms调用,它会将值写入10次,例如5个值dms = 1和5个值dms = 2
我在微控制器中用C编程。
#define array_length 10
static int value_array[4][array_length];
static short array_status =0;
int average_value(int value,short dms)
{
int average,i =0;
if(array_status > array_length)
{
//average_value
array_status=0;
for(i =0 ; i < array_length ; i++)
{
average += value_array[dms][i];
}
average = average / array_length;
}
else
average =0;
value_array[dms][array_status] = value;
array_status++;
return average;
}
答案 0 :(得分:0)
您可以将索引存储在数组中。
#define array_length 10
#define array_dim 4
static int value_array[array_dim][array_length];
static short array_status[array_dim] = {0};
int average_value(int value, short dms)
{
int average, i = 0;
if(array_status[dms] > array_length)
{
//average_value
array_status[dms] = 0;
for(i = 0 ; i < array_length ; i++)
{
average += value_array[dms][i];
}
average = average / array_length;
}
else
average = 0;
value_array[dms][array_status[dms]] = value;
array_status[dms]++;
return average;
}